七行プログラミング (452レス)
1-

145
(2): 03/05/28 05:53 ID:dphN6O/1(1) AAS
ポートスキャナー。

# portscan.pl
use Socket;$h=$ARGV[0];$p=--$ARGV[1];$e=$ARGV[2];$i=inet_aton($h)||die;print"ho
st $h\n\n";while($p++<$e){$f=1;for(1..2){$t=$f?"tcp":"udp";socket(S,PF_INET,
SOCK_STREAM,getprotobyname($t));print"$p $t\n"if connect(S,pack_sockaddr_in($p,
$i));close(S);$f=0}}

usage >peal portscan.pl [host] [start_port] [end_port]

ちなみに、エラーチェックもしてないし、socketらへんもかなり適当なので動かないかもしれますん。
そんときは自分で手を加えるなりして動くようにしてください。
146: 03/05/28 06:12 ID:u3FXwnkV(1) AAS
(´―`)y━~~タバコ代上がるのイヤー
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
外部リンク[html]:www.k-514.com
(´―`)y━~~タバコ代上がるのイヤー
147
(1): 145 03/05/28 19:26 ID:MVa2hSnY(1) AAS
縮まった。

# portscan.pl
use Socket;$h=$ARGV[0];$p=--$ARGV[1];$i=inet_aton $h||die;print"host $h\n\n";
while(++$p<$ARGV[2]){$f=1;for(1..2){socket S,PF_INET,SOCK_STREAM,getprotobyname
($f?"tcp":"udp");print"$p $t\n"if connect S,pack_sockaddr_in($p,$i);close S;$f=
0}}

>>145と同じ理由で動かないかもしれますん。

これ以上縮まらないヨカソ…。
148: 03/05/28 20:05 ID:Edz5ugJ5(1) AAS
>>147
板違い
149: 145 03/05/28 21:50 ID:RXOOGbeu(1) AAS
言ってるそばから縮まった。

# portscan.pl
use Socket;@t=@ARGV;$p=--$t[1];$i=inet_aton $t[0]||die;print"host $t[0]\n\n";
while(++$p<$t[2]){$f=1;for(1..2){socket S,PF_INET,SOCK_STREAM,getprotobyname($f
?"tcp":"udp");print"$p $t\n"if connect S,pack_sockaddr_in($p,$i);close S;$f=0}}
150: 03/05/29 12:44 ID:??? AAS
use Socket;($h,$s,$e)=@ARGV;$i=inet_aton($h)||die;print"host $h\n\n";for$p($s..
$e){for('tcp','udp'){socket S,PF_INET,SOCK_STREAM,getprotobyname$_;print"$p $_
"if connect S,pack_sockaddr_in$p,$i;close S}}
151: 03/07/01 18:25 ID:??? AAS
#!/usr/local/bin/perl
print "Hello World!";
print "Hello World!";
print "Hello World!";
print "Hello World!";
print "Hello World!";
print "Hello World!";
152: 03/07/06 12:17 ID:??? AAS
お前ら!すごいですね
153: 山崎 渉 [(^^)] 03/07/15 11:13 ID:??? AA×

154: 03/07/24 09:35 ID:??? AAS
おもしろそう・・・
155
(1): 山崎 渉 [(^^)sage] 03/08/02 02:38 ID:??? AAS
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
156: ぼるじょあ ◆ySd1dMH5Gk [(^^)] 03/08/02 05:21 ID:??? AA×

157: 山崎 渉 [(^^)] 03/08/15 22:57 ID:??? AA×

158
(1): 03/08/17 15:16 ID:??? AAS
山崎ばかりなのもナニなので kat2xhtml 更新。あと 10 byte ほどなんだが…。

$l='<a href="';sub a{"$l@_\">$a</a>"}sub p{"<span class=\"@_</span>"}while(<>){
($n,$m,$d,$_,$t,$")=split/[,\n]/;$.-1or$T=$t;$n=~m|<b>([^<]*)(</b>([^<]*))?|;$n
=($1&&p"n\">$1").($3&&p"m\">$3");$n=p qq|k" title="$m">$n|if$m.0;s/\x81\x97\x81
M/,/gx;s/\s+(target="\w*"|$)//g;s|\s*<br>|<br />|g;s/&(?!\w+;|\#\d+;)/&/g;(
($u,$a)=/^$l([^"]+)">([^<]+)/)?($_=$u=~s/~/%7E/g?a$u:$a=~/^(>){1,2}(\d+)/?a
"#R$2":$_):s/"/"/g for@r=split/($l[^"]+">[^<]+<\/a>)/;$A.="<dt>$. :<a id"
."=\"R$.\">$n :$d</a></dt><dd>@r</dd>\n"}open T,$/="$0.tmpl";$_=<T>;s/%(.)/${
$1}/g;print

・?xHHHH 形式の数値実体参照を諦め。
・テンプレートのファイル名を "$0.tmpl" に。
・説明やら入れたアーカイヴは 外部リンク:cm.xrea.cc に。
159: 03/08/17 15:19 ID:??? AAS
>>158
s/?xHHHH/&#xHHHH/;
160
(1): 03/08/18 07:15 ID:??? AAS
ちょっと長くなったけど、初心者質問スレを荒らしている彼に捧げよう。(w

#--- br.p ---
package P;sub c{bless pop,pop}sub s{$_[0]->{s}}sub n{$_[0]->{n}}sub h{my($s,$c)
=@_;$c||return$s->{h};($s->{h}+=$c)>0or$s->{h}=0}sub b{my($s,$e)=@_;my@w=keys%{
$s->{w}};my$w=$w[int rand@w];print$s->n,' は ',$w," で攻撃!\n";my($d,$a)=@{$s->
{w}{$w}}{d,a};$d=(my$n=int rand 101)>$a?0:$n>$a/2?int($d/2)-$e->s:$n>$a/20?$d-
$e->s:$d;print$d<=0?"ミス!\n":($e->n,' に ',$d," ポイントのダメージ!\n");$e->h(
-$d)||print$e->n," を倒した!\n"}package main;sub p{splice@p,int rand@p,1}@p=map
P->c($_),@{do'./p.dat'};while(@p>1){my$o=p;my$d=p;print"\n",$o->n,':',$o->h,' '
,$d->n,':',$d->h,"\n";$o->b($d);push@p,$o;$d->h>0&&push@p,$d}print(shift(@p)->n
, " の 勝利!\n")

#--- p.dat ---
[{n=>'煽り',h=>400s=>10w=>{'キック'=>{d=>60a=>60},'パンチ'=>{d=>20a=>70},}}
,{n=>'荒らし',h=>300s=>0w=>{'キック'=>{d=>100a=>60},'パンチ'=>{d=>40a=>70}}
},{n=>'夏厨',h=>200s=>20w=>{'キック'=>{d=>80a=>90},'パンチ'=>{d=>10a=>100}}
}];
161: 03/08/18 12:36 ID:??? AAS
>>160
ワロタ
162: 03/08/19 11:57 ID:??? AAS
縮めて CGI プログラムにした。これで彼も満足だろう。

#--- br.cgi ---
#!/usr/local/bin/perl
use CGI':all';put header(-charset=>($c='EUC-JP')),start_html(-lang=>ja,-title=>
'B.R.',-encoding=>$c);@p=@{do'br.dat'};sub e{splice@p,int rand@p,1}while(@p>1){
*o=e;*d=e;put p"$o{N}:$o{H} $d{N}:$d{H}";@w=keys%{$o{W}};$w=$w[int rand@w];($p,
$a)=@{$o{W}{$w}}{D,A};put p("$o{N}は$wで攻撃!",(($p=($n=int rand 101)>$a?0:$n>
$a/2?int($p/2)-$d{S}:$n>$a/20?$p-$d{S}:$p)>0or$p=0)?"$d{N}に$pポイントのダメー"
.'ジ!':'ミス!');($d{H}-=$p)>0or put p"$d{N}を倒した!";push@p,\%o;$d{H}>0&&push
@p,\%d}put p(pop(@p)->{N}, 'の勝利!'),end_html

#--- br.dat ---
[
{N=>'煽り', H=>400S=>10W=>{'キック'=>{D=>60 A=>60},'パンチ'=>{D=>20A=>70 }}},
{N=>'荒らし',H=>300S=>0 W=>{'キック'=>{D=>100A=>60},'パンチ'=>{D=>40A=>70 }}},
{N=>'夏厨', H=>200S=>20W=>{'キック'=>{D=>80 A=>90},'パンチ'=>{D=>10A=>100}}},
];
163: 03/08/20 07:02 ID:??? AAS
メッセージを削るという安直な方法で七行達成。

#!/usr/local/bin/perl
use CGI':all';put header(-charset=>($c='EUC-JP')),start_html -lang=>ja,-title=>
BR,-encoding=>$c;@p=@{do'br.dat'};while(@p>1){put p map"$_->{N}:$_->{H}",@p;*d=
splice@p,int rand@p,1;*o=$p[int rand@p];@w=keys%{$o{W}};($p,$a)=@{$o{W}{$w=$w[
int rand@w]}}{D,A};put p"$o{N}は$d{N}に$wで攻撃!",(($p=($n=int rand 100)>$a?0:
$n>$a/2?int($p/2)-$d{S}:$n>$a/20?$p-$d{S}:$p)>0or$p=0)?"$pダメージ!":'ミス!';(
$d{H}-=$p)>0?push@p,\%d:put p b"$d{N}を倒した!"}put p"$p[0]{N}の勝利!",end_html
164
(1): 03/08/28 05:11 ID:??? AAS
「素早さ」を実装したいけど、どうも巧くない。

#--- br.dat ---
# 名前, 防御力, 体力, 素早さ(1〜99), [ [ 武器名, 攻撃力, 命中率(1〜99) ] ... ]
[
[ '煽り', 10, 300, 99, [['キック',60,50], ['パンチ',30,70]] ],
[ '荒らし', 0, 400, 50, [['キック',90,70], ['パンチ',40,80]] ],
[ '夏厨', 20, 200, 25, [['キック',80,90], ['パンチ',20,90]] ],
];

#--- br.cgi (素早さ実装版) ---
#!/usr/local/bin/perl
use CGI':all';put header(-charset=>($C='EUC-JP')),start_html -encoding=>$C,lang
,ja,title=>BR;@p=@{do'br.dat'};while($#p){put p map"[$_->[0]:$_->[2]]",@p;$N=0;
{for(0..$#p){int$c%(99/$p[$_][3])&&next;($N,*W)=@{*O=splice@p,$_,1}[0,4];($W,$D
,$A)=@{$W[rand@W]};last}$c=0if++$c>99;$N||redo}($n,$s)=@{*d=splice@p,rand@p,1};
put p"$Nは$nに$W!",(($D-=($i=rand 100)>$A?$D:$i>$A/2?int($D/2)+$s:$i>$A/20?$s:0
)>0or$D=0)?"$Dダメージ!":'ミス!';@p=sort{$b->[3]<=>$a->[3]}@p,\@O;($d[2]-=$D)>0
?@p=(\@d,@p):put p b"$nを倒した!"}put p"$Nの勝利!",end_html

#--- br.cgi (素早さ未実装版) ---
#!/usr/local/bin/perl
use CGI':all';put header(-charset=>($C='EUC-JP')),start_html -encoding=>$C,lang
,ja,title=>BR;@p=@{do'br.dat'};while($#p){put p map"[$_->[0]:$_->[2]]",@p;($N,
*W)=@{$p[-1]}[0,4];($W,$D,$A)=@{$W[rand@W]};($n,$s)=@{*d=splice@p,rand$#p,1};
put p"$Nは$nに$W!",(($D-=($i=rand 100)>$A?$D:$i>$A/2?int($D/2)+$s:$i>$A/20?$s:0
)>0or$D=0)?"$Dダメージ!":'ミス!';($d[2]-=$D)>0?push@p,\@d:put p b"$nを倒した!"}
put p"$Nの勝利!",end_html
165: 03/08/28 12:01 ID:??? AAS
>>164
まだやってたのかよw

がんがれ!
166
(1): 保守 03/10/04 05:54 ID:??? AAS
$$_=1for"@ARGV"=~/\w/g;for('0019'..9999){my%c;$n=$_;next if$h{"@{[sort@v=/./g]}
"}++&&$o||$z&&/0/||$d&&(grep$c{$_}++,@v);O:for(map[@{[qw(+ - * /)]}[$_&3,$_>>2&
3,$_>>4&3]],0..63){@x=(@$_,@v);eval==10&&do{print"$n:$_\n";$c&&last O}for grep
s/(\d)/$x[$1]/g,qw/(304)1(526) ((304)15)26 30(41(526)) 30((415)26) (30(415))26/
}}
167: 03/10/05 03:33 ID:??? AAS
本家スレで出てた切符問題の CGI プログラム版。
選択された4つの数字のみを調べる。

#!/usr/local/bin/perl
use CGI':all';@n=param n;for(map[@{[qw(+ - * /)]}[$_&3,$_>>2&3,$_>>4&3]],0..63)
{@x=(@$_,@n);for$t(qw/(304)1(526) ((304)15)26 30(41(526)) 30((415)26)/,'(30(41'
.'5))26'){$_=$t;s/(\d)/$x[$1]/g;eval==10&&push@e,$_.br}}put header,start_html(
-title=>7410),startform(0,script_name),p(scrolling_list(qw(-name n -size 10),
-values=>[0..9])x4,submit),endform,p(@e),end_html

>>166 は 5.005_03 なら動いたけど 5.8.0 だと不可。
168: 03/10/05 20:23 ID:??? AAS
コマンドライン・CGI 両対応版。

#--- 7410.cgi ---
#!/usr/local/bin/perl
use CGI':all';sub e{for(map[@{[qw(+ - * /)]}[$_&3,$_>>2&3,$_>>4&3]],0..63){@x=(
@$_,@n);for$t(qw/(304)1(526) ((304)15)26 30(41(526)) 30((415)26) (30(415))26/){
$_=$t;s/(\d)/$x[$1]/g;eval==10&&do{$r?push@e,$_.br:print"$n:$_\n";$c&&return}}}
@e}if($r=$ENV{'REMOTE_ADDR'}){@n=param n;put header,start_html(-title=>7410),
startform(0,script_name),p(scrolling_list(qw(-name n -size 10 -values),[0..9])x
4,submit),endform,p(e),end_html}else{$$_=1for"@ARGV"=~/\w/g;$n=$_,$h{"@{[sort@n
=/./g]}"}++&&$o||$z&&/0/||$d&&do{my%c;grep$c{$_}++,@n}or e for'0019'..9999}
__END__

usage: ./7410.cgi [ -cdoz ]
-c : 1組の数字に対し1つの計算式のみ出力
-d : 同じ数字を使わない
-o : 1組の数字に対し1つの出現順序のみ出力
-z : 0を含めない
169: 03/10/08 01:14 ID:??? AAS
5.005_03 と 5.8.0 の両方でマジメにチェック & 縮め。

#!/usr/local/bin/perl
use CGI':all';sub e{my@e;for(0..63){@x=(@{[qw(+ - * /)]}[$_&3,$_>>2&3,$_>>4&3],
@n,param n);for$t(qw/(304)1(526) ((304)15)26 30(41(526)) 30((415)26)
(30(415))26/){$_=$t;s/(\d)/$x[$1]/g;10-eval or$r?push@e,$_.br:put("$n:$_\n"),$c
&&return}}@e}($r=$ENV{REMOTE_ADDR})?put(header,start_html(-title=>7410),
startform(0,script_name),p(scrolling_list(-values=>[0..9],name,n,size,10)x4,
submit),endform,p(e),end_html):do{$$_=1for"@ARGV"=~/\w/g;$n=$_,$h{"@{[sort@n=
/./g]}"}++&&$o||$z&&/0/||$d&&4>keys%{{map{$_,1}@n}}or e for'0019'..'9999'}
170: 7blosxom 03/12/01 03:01 ID:i/vnv4B8(1/4) AAS
#!/usr/bin/perl
use CGI':all';use File::Find;$n=param('n')||0;@i=split'/',path_info;shift@i;($y,
$m,$d)=grep{/^\d+$/}@i;$p=join'/',grep{/^\D+$/}@i;find sub{($f=$File::Find::name
)=~/\.txt$/and$e{$f}=-M},"./$p";put header,start_html;for((sort{$e{$a}<=>$e{$b}}
keys%e)[$n..$n+40]){($z,$x,$c)=(localtime(time-60*60*24*$e{$_}))[5,4,3];next if(
($y&&$y!=$z+1900)or($m&&$m!=$x+1)or($d&&$d!=$c)or!-f);s/^\.\///;open(F,$_)&&{
chomp($t=<F>),put(a({-href=>url."/$_"},h2 $t),<Fhr,"\n"),close F}}put end_html
171: 7blosxom 03/12/01 03:13 ID:i/vnv4B8(2/4) AAS
久しぶりに7行プログラミング。

PATH_INFOで指定できるのは、日付とカテゴリのみ。
月の指定は数字のみ可能。Decとかには未対応。
indexや他のFlavourは未実装。

リクエストの例
./7blosxom.cgi
./7blosxom.cgi/2003
./7blosxom.cgi/2003/11
./7blosxom.cgi/2003/11/30
./7blosxom.cgi/2003/11/foo
./7blosxom.cgi/2003/foo/bar
./7blosxom.cgi/foo/hoge.txt

PAGING 機能。意味なくつけてみたけど、いらないよぉな気がする。(TODO remove)
./7blosxom.cgi?n=10
./7blosxom.cgi?n=10/foo/2000

リクエスト例。例外
./7blosxom.cgi///// ... 何も指定しないのと同じ。
./7blosxom.cgi/2003/11/30/1/ ... 4つめ以降の数字は無視される。
./7blosxom.cgi/foo2/ ... 正規表現が手抜きな為、数字+文字の組合せは無視される。
172: 03/12/01 06:28 ID:i/vnv4B8(3/4) AAS
訂正。HTML&&桁数間違えてた。

#!/usr/bin/perl
use CGI':all';use File::Find;@i=split'/',path_info;shift@i;($y,$m,$d)=grep/^\d+
$/x,@i;$p=join'/',grep{/^\D+$/}@i;find sub{($f=$File::Find::name)=~/\.txt$/and$
e{$f}=-M},"./$p";put header,start_html;for(sort{$e{$a}<=>$e{$b}}keys%e){($z,$x,
$c)=(localtime(time-86400*$e{$_}))[5,4,3];if(!(($y&&$y!=$z+1900)or($m&&$m!=$x+1
)or($d&&$d!=$c))&&-f&&open F,$_){s/^\.\///;chomp($t=<F>);put hr,h2 a({href,url.
"/$_"},$t),pre<F"\n";close F}}put end_html

- データ用のディレクトリをカレントディレクトリ以外に指定したい場合。
ln -s /home/your/data/path home とリンクを作り。
7blosxom.cgi/home とアクセスする。
173
(1): 128 03/12/01 18:34 ID:xLzdr2os(1) AAS
それじゃ漏れも久々に投稿。
スレッド式掲示板です。
データ用ディレクトリ G が必要です。

---------------------- 7thread.cgi -----------------------
use CGI":all";charset"x-sjis";*i=*param;*e=*escapeHTML;chdir G;i B,$b,open F,">
$b"if($b=e(i S))&&!-e$b;$b||=i(B);*x=*textfield;open F,"+<$b";[<F>];seekF,0,2;s
!外部リンク:.+$!a{href,$&},$&!emg,s/\n/br/eg,$n=e(i N)||'七氏',print F dt(++$.,':'.
b(a{i(M)&&(href,'mailto:'.e(i M))},$n),':'.localtime),dd($_.p),"\n"if$_=e(i T);
seek F,0,0;put header,start_html($b),h1($b),startform,(i B)?dl(<F>).a{href,'?'}
,'一覧':ol(li[map{a{href,"?B=$_"},$_}sort{-A$a<=>-A$b}<*>]).hr.'スレ'.x(S),hidden
(B),br,submit,'名前',x(N),'MAIL',x(M),br,textarea(T,'',6,80,1),endform,end_html
------------------------------------------------------
174
(3): 03/12/01 20:35 ID:lEOu0k9S(1) AAS
モジュールありだったらいくらでも短くできるのでは?
1-
あと 278 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.015s