- 1 名前:nobodyさん [02/11/01 18:06 ID:umVq3FGM]
- ・7行×79文字
・Perl どうぞ。
- 7 名前:nobodyさん [02/11/01 18:52 ID:???]
- #!/usr/local/bin/perl
if (>>1 = "バカ") { print "イッテヨシ"; } else { print "マターリしましょう"; }
- 8 名前:nobodyさん mailto:sage [02/11/01 19:29 ID:???]
- #!/usr/bin/perl
my $logfile = './count.log'; my $addr = $ENV{'REMOTE_ADDR'}; open( FILE,"+<$logfile" ) or die; flock( FILE, 2 ); ( $_ = <FILE> ) =~ /^(.*?):(.*)$/; my ( $count, $ip ) = ( $1, $2 ); $count++ if $addr ne $ip; seek( FILE, 0, 0 ); print FILE "$count\:$addr"; truncate( FILE, tell ); close FILE; print "Content-type: text/plain\n\n"; printf( "%.5d", $count ); exit; 自作のカウンターです。元はKENTですが原型無いです。 一応多重カウント防止、桁そろえします。 これなんとか7行にできそーなんだけど、どうでそう?
- 9 名前: ◆hMJAPH9PWA mailto:sage [02/11/01 19:43 ID:???]
- 何とかも何も、変数の冗長性を残しても3行になったよ。
#!/usr/bin/perl -w $addr=$ENV{REMOTE_ADDR};open L,"+<.log";flock L,2;($c,$ip)=split/:/,<L>; if($addr ne$ip){$c++;seek L,0,0;print L "$c:$addr";truncate L,tell(L);print "Content-Type:text/plain\n\n$c"}
- 10 名前:nobodyさん mailto:sage [02/11/01 19:53 ID:???]
- ワーイ 3行にナッター 有難う。
まだまだperl勉強中の身ですー
- 11 名前: ◆hMJAPH9PWA mailto:sage [02/11/01 20:47 ID:???]
- と思ったらバグがあった。後半の処理全部ifブロックに入れたらダメじゃん。
しかも3行じゃなくて3行ね。 ついでに変数を短く。flockしなけりゃ3行いけるね。 #!/usr/bin/perl -w $a=$ENV{REMOTE_ADDR};open L,"+<l";flock L,2;($c,$i)=split/:/,<L>;if($a ne$i){ $c++;seek L,0,0;print L"$c:$a";truncate L,tell L}print"Content-Type:text/plain \n$c"
- 12 名前:nobodyさん mailto:sage [02/11/01 21:11 ID:???]
- >>11
でも、読みにくいね
- 13 名前:nobodyさん mailto:age [02/11/01 21:44 ID:???]
- >>12
読みやすさを追求してるわけじゃないんだけどね 趣旨を理解してよ
- 14 名前:nobodyさん mailto:sage [02/11/01 22:14 ID:???]
- ああ、; までで1行ってわけじゃないんだ。
- 15 名前:nobodyさん mailto: [02/11/01 22:27 ID:???]
- やっぱカウンタぐらいしかできないか。
- 16 名前:nobodyさん mailto:sage [02/11/01 23:05 ID:???]
- ム板かと思った。
- 17 名前:rubyist@カラアゲうまうま mailto:sssss [02/11/01 23:14 ID:???]
- SWFファイルからJPEGを取り出す
SWF("$ARGV[0]"); sub SWF{$file="$_[0]";open(FILE,$file); binmode FILE;while(<FILE>){$ed=unpack("h*","$_"); if($ed=~/ff8dff0e.{2}01a46494640010/){$Wri=pack("h*","$ed"); print FILEX "$Wri";$ed=~s/.*(ff8dff0e.{2}01a46494640010)/$1/; $c9++;print "$c9\n";$fileX="SWF$file$c9.jpg";open(FILEX,">$fileX"); binmode FILEX;}$Wri=pack("h*","$ed");print FILEX "$Wri";}}
- 18 名前:nobodyさん mailto: [02/11/01 23:58 ID:???]
- >>8の
truncate( FILE, tell ); これはどういう意味?
- 19 名前:nobodyさん mailto:sage [02/11/02 00:07 ID:???]
- tell FILE
↑が抜けてるにょ
- 20 名前:nobodyさん mailto:sage [02/11/02 00:10 ID:???]
- print <<7LINE;
******************************************************************************* ******************************************************************************* ******************************************************************************* ******************************************************************************* ******************************************************************************* ******************************************************************************* ******************************************************************************* 7LINE
- 21 名前:nobodyさん mailto:sage [02/11/02 00:11 ID:???]
- >>19
( ´,_ゝ`) プッ
- 22 名前:nobodyさん mailto:sage [02/11/02 00:19 ID:???]
- (; °▽°)FILEなくもいけた〜〜
- 23 名前:nobodyさん [02/11/02 00:51 ID:TEd9xaNd]
- echo "aho1"
echo "aho2" echo "aho3" echo "aho4" echo "aho5" echo "aho6" echo "aho7"
- 24 名前:( ´∀`)ヮ-ィ mailto:sage [02/11/02 01:25 ID:???]
- 掲示板でけた〜〜
#!/usr/bin/perl if($ENV{'REQUEST_METHOD'}eq'POST'){read(STDIN,$b,$ENV{'CONTENT_LENGTH'}); foreach(split(/&/,$b)){($c,$d)=split(/=/,$_);$d=~tr/+/ /; $d=~s/%([a-f\d]{2})/pack('H2',$1)/egi;$form{$c}=$d}open(F,'>>z.txt'); print F "$form{y}\n";close F}print"Content-type:text/html\n\n<html> <form action=x.cgi method=post><input type=text name=y><input type=submit> </form><br><br>";open(F,'z.txt');while(<F>){print "$_<br>\n"}print'</html>';
- 25 名前:nobodyさん mailto: [02/11/02 01:46 ID:???]
- 動きませぬ
- 26 名前:25 mailto: [02/11/02 01:49 ID:???]
- あ、動きましたw
- 27 名前:nobodyさん mailto:sage [02/11/02 02:08 ID:???]
- >>1 Perl限定かよ。
- 28 名前:nobodyさん mailto:sage [02/11/02 06:30 ID:???]
- 昔のBASICの1画面プログラムを思い出したよ
- 29 名前:nobodyさん [02/11/02 14:13 ID:1/HvBlpx]
- Dukeまだ〜? チンチン
- 30 名前:nobodyさん [02/11/02 17:48 ID:Sny9GkFS]
- てめーら七行もあるのにその程度のモンしか作れねーのかよ(プ
- 31 名前:nobodyさん mailto:sage [02/11/02 17:53 ID:???]
- >>30
だからきみのすごい作品を待っています。ハイレベル期待しています。 もうできてる? 今からつくる? 今日中には書き込んでくれ。
- 32 名前:nobodyさん [02/11/02 20:55 ID:RJf4RKlR]
- すごい作品まだ〜? チンチン
- 33 名前:nobodyさん [02/11/02 21:13 ID:aPBbHnBW]
- 何本気になってんの?
- 34 名前:末吉亮介 [02/11/02 21:15 ID:MUhjalxS]
-
plaza.rakuten.co.jp/a240a/
- 35 名前:nobodyさん mailto:sage [02/11/02 22:13 ID:???]
- >>33
作れないヤツはすっこんでてね(はぁと
- 36 名前:nobodyさん mailto:sage [02/11/03 00:25 ID:???]
- >>30は、口だけ大将だったということか・・・
- 37 名前:nobodyさん mailto:sage [02/11/03 10:09 ID:???]
- 実際、Perlだったらかなりのものが出来てもおかしくはないかと。
ム板の7行スレは凄かった。
- 38 名前:nobodyさん mailto:age [02/11/03 14:13 ID:???]
- ム板マ板で相手にされない厨が集まる板はここですか?
- 39 名前:ユカリ [02/11/03 14:35 ID:8kfSttUc]
-
プランテック製の「 RX-2000V 」を改造済み にした、アイティーエス製の「 RX-2000V 」↓ user.auctions.yahoo.co.jp/jp/user/neo_uuronntya#.2ch.net/ 現在、本当に人気がある様です。 私も、この前、買いました。 関連ホームページ↓ www.h5.dion.ne.jp/~gekitoku/ www.h4.dion.ne.jp/~gekiyasu/ www.h5.dion.ne.jp/~gekirea/ www.h4.dion.ne.jp/~shinsetu/
- 40 名前:nobodyさん mailto:sage [02/11/03 14:48 ID:???]
- WebProg らしく。
--- cgi-lib.po --- my($m,$l,$i,$e,$x)=@ENV{'REQUEST_METHOD','CONTENT_LENGTH'};my$d=sub{$d= "Request to receive too much data: $l bytes\n";print"Content-Type: text/plain", "\n\n$d";die$d};sub ReadParse{$l>$$x?&$d:$m=~/POST/?($e=$l-read STDIN,$i,$l):( $i=$ENV{QUERY_STRING});local*I=pop;my@i=(split(/[&;]/,$i),($m?():@ARGV));for(@i ){tr/+/ /;s/%([\da-f]{2})/pack'H2',$1/egi for my($k,$v)=split/=/,$_,2;$I{$k}.= $I{$k}?"\0$v":$v}!$e&&scalar@i}${$x='cgi_lib::maxdata'}=131072 --------------- cgi-lib.pl 互換。Perl4 不可、multipart 未対応。 require 'cgi-lib.po'; $cgi_lib::maxdata = 1024; # POST 時の上限サイズ ReadParse(*in); # or ReadParse(\%in);
- 41 名前: ◆FruitsMIpE mailto:sage [02/11/03 18:15 ID:???]
- 名前入力欄つき掲示板
$q=$ENV{QUERY_STRING}; if($q){@p=split /[&;]/,$q; foreach(@p){($a,$b)=split "="; $b=~tr/+/ /; $b=~s/%([A-Za-z0-9]{2})/pack("C", hex($1))/eg; $i{$a}=$b;} open W, ">> b.log"; print W "$i{n}<>$i{m}\n"; close W;} print "Content-type: text/html\n\n<html>\n<head><title>掲示板</title></head>\n<body>\n"; open R, "b.log"; while(<R>){chomp; ($n,$m)=split "<>"; print "$n:$m<br>\n";} close R; print qq{<hr>\n<form>Name<input type="text" name="n"> <input type="text" name="m" size="64"><input type="submit"></form>\n<hr>\n</body></html>\n}; exit;
- 42 名前: ◆FruitsMIpE mailto:sage [02/11/03 18:27 ID:???]
- 改良
$q=$ENV{QUERY_STRING}; if($q){@p=split /[&;]/,$q; foreach(@p){($a,$b)=split "="; $b=~tr/+/ /; $b=~s/%([A-Za-z0-9]{2})/pack("C", hex($1))/eg; $i{$a}=$b;} open W, ">> b.log"; print W "$i{n}:$i{m}\n"; close W;} print "Content-type: text/html\n\n<html>\n<title>BBS</title>\n\n"; open R, "b.log"; while(<R>) {chomp; print "$_<br>\n";} close R; print qq{<hr>\n<form>Name<input type="text" name="n"> <input type="text" name="m" size="64"> <input type="submit"> [<a href="b.cgi">Reload</a>] [<a href="../../">Back</a>]</form>\n<hr>\n</html>\n};
- 43 名前:nobodyさん mailto:sage [02/11/03 18:38 ID:???]
- >>24 を発展させてみた。一行掲示板。
--- 7bbs.cgi --- #!/usr/local/bin/perl $l='7bbs.log';if(read STDIN,$_,$ENV{'CONTENT_LENGTH'}){for(split/&/){$_=(split /=/)[1];tr/+/ /;s/%([a-f\d]{2})/pack'H2',$1/egi;push@r,$_}@r=(''.localtime,@r); open F,"+<$l";flock F,2;@l=(join(': ',@r),"<br>\n",<F>);truncate F,0;print F @l[0..49]}open F,$l;print join('><input type=',"Content-type: text/html\n\n". '<title></title><form action=7bbs.cgi method=post','text name=n','text name=w', 'submit></form>'),<F> ---------------- 新しい順に表示。50件まで保存。 >>41 ネタが被るねぇ。ゴメンね。(´・ω・`)
- 44 名前:nobodyさん mailto:sage [02/11/03 19:17 ID:???]
- 動かねぇです大将!>>42>>43
>>42のは半角でも全角でも変な文字が保存されるです!モジコード変えてもダメだったです! >>43のはファイルが作成されませぬ! 私のミステイクでしょうか!ハラキリ!
- 45 名前:nobodyさん mailto:sage [02/11/03 19:22 ID:???]
- >>44
open F,"+<$l"; ←注目 つー事で、ログファイルは先に作っといて。 $l='7bbs.log'; のトコがログファイルのパスだから、よろ。
- 46 名前:nobodyさん mailto:require使えば [02/11/03 19:44 ID:???]
- 1行でも書けるな。
- 47 名前:nobodyさん mailto:sage [02/11/03 20:07 ID:???]
- ( そんな事より1さん、ちょっと聞いてよ。スレとあんまり関係ないけどさ。
`ー‐―V――――――――――――――――――――――――――――― ;:'´ ( このあいだ、WebProg板へ行ったんですの。WebProg板。 _....._{{ 〃 \ そしたらなんかRuby!と書かれたレスが多発していましたわ。 , - ' ,..、、.ヾ{{フ'⌒`ヽ、ー―――V―――――――――――――――――― / ,:', -‐‐` ´ '´⌒ヽ ヾ:、 _....、、、、 ( で、よく見たらrubyistという名前の書き込みで、 . ,' ,'´ ,ィ ,ィ ,' , `ヽ', ',-<´ , `ヽ.`ー――――V― 相手してもらえてないんです。 ,' .i /|. /.| { i, i, }. }_,,)) lニ二二ミヽ.、 ':, ,.: '´ ,_.....__`ヽ、 ,..-‐-、),.....`_―――――― ! | ! .,'-.{ ! !|; |`、.}゙!.! |. ! ヽ.l ./ ,! ,,`ヾ:、 ':, ./'´ ̄`ヾ、、ヽ,.:'´ ,:‐:、 ,.-、 ヽ. ', ', |Vァ=、゙、 `゙、!-_:ト,リ', l ! | ゙レ__,〃_/リ !.'; .} ./l_|___ノ! l `、 ', / //`''} }.'; ', ヽ、', l:!Kノ}. f:_.)i゙i: リ ! l ル' ̄`` ´-、,ノノ l l .!,;:=、`:.`:>=、.j,} |__人(( _ノノノ | | l!iヾ- ' , .!__:ノ ゙ ,リ l リ'´ .|' ̄ヽ __ `><ノ | {;:'ノ ノtrテ;、.Y ! ,--、 __`彡 ノ . ',|!!、 r‐┐ ` ノ' /,イ ! __ , ⌒'/!| | !.`ー‐'´, ゙じ' ノ ! h. ._: ´ ソ).( 'i!゙、ヽ、 ゙ー' _, ィ,:',:''´ ! !、 ー' ノイ ! | | !、 !フ `フ'リ ! ル'ヽ.._ _..、(ン ノ ) ゙:、ィ、jヾー::: 'iヘ ノ',リ./! .| |ー`┬、' ´ 〃 l. トヾ、.゙`ィ'' ´ヽ、/// \二|`\ー‐‐'´ ,、- '´ ヽ、゙、 { `>"、 ! ! ! | `>-、 | |、 ________∧_____ /\\ ', } //`ヽ| ',.!゙、 !// ゙!/ ! ( もうね、アホかと。馬鹿かと‥
- 48 名前:nobodyさん [02/11/03 21:17 ID:QK0oCR94]
- 明文化
・7行×79文字 ・Perl ・#!/usr/local/bin/perlは含まない。実質的なプログラムで七行。 ・スペースも1文字分。2バイト文字は2文字分。 でいいでしょうか?
- 49 名前:rubyist@カラアゲうまうま mailto:sage [02/11/03 21:21 ID:???]
- perl版cc1だれか作れ
- 50 名前:nobodyさん mailto:sage [02/11/03 22:32 ID:???]
- このスレを見たとき、
ム板かと思いますた。
- 51 名前:nobodyさん mailto:sage [02/11/03 22:34 ID:???]
- 掲示板は本家でもうかなり短くなってないか?
別に委員だけど、もっと面白いネタがないかなと。
- 52 名前:43 mailto:sage [02/11/03 23:08 ID:???]
- >>48
プログラムが Web 関連物なら言語は何でもいいんじゃ? シェバング行は C の #include みたいなモンだから…。 >>51 単に縮めるだけじゃなく、7行をギリギリまで使って機能増やすのも 楽しみの一つだよ。掲示板に食傷気味なのは同意するけど。(w つー事で改良。 --- 7bbs.cgi --- #!/usr/local/bin/perl $l='7bbs.log';if(read STDIN,$_,$ENV{CONTENT_LENGTH}){@r=''.localtime;for(split /&/){$_=(split/=/)[1];tr/+/ /;s/%([a-f\d]{2})/pack'H2',$1/egi;s/(["&<>])/'?'. unpack('C',$1).';'/eg;push@r,$_}open F,"+<$l";flock F,2;@l=(join(': ',@r). "<br>\n",<F>);truncate F,0;seek F,0,0;print F @l[0..49]}open F,$l;print join( '><input type=',"Content-type: text/html\n\n<title>7BBS</title><form action=". '7bbs.cgi method=post','text name=n','text name=w',"submit></form>\n"),<F> ---------------- ["&<>] を数値文字参照に変換。
- 53 名前:nobodyさん mailto:sage [02/11/03 23:18 ID:???]
- 7行のスレッドフロート型掲示板とかは無理?
- 54 名前: ◆FruitsMIpE mailto:sage [02/11/03 23:44 ID:???]
- >>43
Winではflock 使えなくてエラーに ヽ(*`Д´)ノ ワァァン >>44 ガ━━━━(;゚Д゚)━━━━ン !! すいませn原因わかりませn Windows環境でSJISならうまくいくんだけど・・ >>53 前に2ch型掲示板作ってみたけど、無理確定のような気がする。 誰か作れる人、いるかな
- 55 名前:nobodyさん [02/11/04 06:56 ID:5+umhhBG]
- 7行2ch型掲示板
ただし、かちゅ〜しゃがないとだめぽ、 read.cgiがないから読めないし、書きこみフォームもないから、あとsubject.txtの新スレは一番下になる。 flockもしていない、かちゅに依存するために変数名が長い。 下記のディレクトリ構成で成功 /test +--/bbs.cgi +--/subject.txt +--/dat/ #!/usr/local/bin/perl $t=time;read(STDIN,$b,$ENV{'CONTENT_LENGTH'});@p=split(/&/,$b);foreach (@p) {($a,$v)=split "=";$v=~tr/+/ /;$v=~s/%([A-Za-z0-9]{2})/pack("C", hex($1))/eg; $i{$a}=$v;}if(!$i{'key'}){$i{'key'}=$t;}open(F,">>./dat/$i{'key'}.dat"); print F "$i{'FROM'}<>$i{'mail'}<>$t<>$i{'MESSAGE'}<>$i{'subject'}\n";close(F); open(S,">>./subject.txt");print S "$i{'key'}.dat<>$i{'subject'}(1)\n"; close(S);exit; つーか激しく2ch型から離れているが。
- 56 名前:nobodyさん mailto:sage [02/11/04 09:38 ID:???]
- >>55
それは普通掲示板といいません(w win鯖では動いたけどな。
- 57 名前:nobodyさん mailto:sage [02/11/04 12:16 ID:???]
- やはりCGIだと、定型的な部分で多く取られてしまいますな。
- 58 名前:( ´∀`)でけた〜 mailto:sage [02/11/04 12:59 ID:???]
- [アクセス解析]
CGI名: a.cgi 空ファイル用意: log そのままアクセスしてログ取り 引数に a をつけて解析結果表示 #!/usr/bin/perl &a if $ENV{QUERY_STRING}eq'a';($s,$m,$j,$d,$g,$y)=gmtime(time+9*60*60);$i=$ENV{ REMOTE_ADDR};$h=$ENV{REMOTE_HOST}||gethostbyaddr(pack('C4',split(/\./,$i)),2)|| $i;$y=sprintf("%d/%02d/%02d/ %02d:%02d:%02d",$y+=1900,++$g,$d,$j,$m,$s);open(F, '+<log');@d=<F>;unshift(@d,"$y,$h,$ENV{HTTP_USER_AGENT},$ENV{HTTP_REFERER}\n"); seek(F,0,0);print F @d;sub a{print"Content-type:text/html\n\n";open(F,'log'); while(<F>){($t,$h,$u,$r)=split(/,/,$_);print"$t<br>$h<br>$u<br>$r<hr>"}exit}
- 59 名前:nobodyさん mailto:sage [02/11/04 14:26 ID:???]
- で、実用性ある奴はあるのか?
- 60 名前:nobodyさん [02/11/04 15:47 ID:CMvXGJGy]
- (・ε・)v キニシナイ!
- 61 名前:nobodyさん mailto:sage [02/11/04 20:59 ID:???]
- HTML4.01strictとかどうよw
- 62 名前:nobodyさん mailto:sage [02/11/04 23:14 ID:???]
- >>57
試しにHTMLを分離して作ってみたら大分縮んだ。 ttp://boobar.hp.infoseek.co.jp/7bbs2/7bbs2_0.0.1.tar.gz >>58 縮めてみた。 #!/usr/bin/perl if($ENV{QUERY_STRING}eq'a'){open F,'log';print"Content-Type: text/html\n\n",map join('<br>',split/,/).'<hr>',<F>;exit}$i=$ENV{REMOTE_ADDR};$h=$ENV{REMOTE_HOST} ||gethostbyaddr(pack('C4',split/\./,$i),2)||$i;($s,$m,$j,$d,$g,$y)=localtime; open F,'+<log';eval{flock F,2};@d=(sprintf('%d/%02d/%02d %02d:%02d:%02d',1900+ $y,$g+1,$d,$j,$m,$s).",$h,$ENV{HTTP_USER_AGENT},$ENV{HTTP_REFERER}\n",<F>); truncate F,0;seek F,0,0;print F @d
- 63 名前:age mailto:age [02/11/05 18:48 ID:???]
- age
- 64 名前:nobodyさん [02/11/14 07:16 ID:M/ZRCXHw]
- あげ
- 65 名前:nobodyさん [02/11/20 18:28 ID:707UhyRv]
- 7行Wikiくれ。
- 66 名前:nobodyさん mailto:sage [02/11/21 07:14 ID:???]
- ---- 7wiki.cgi
#!/usr/local/bin/perl -w use strict; use CGI qw/:standard/; use AnyDBM_File; use Fcntl; my$id=$ENV{'QUERY_STRING'}||'FrontPage';my$msg=param('msg')||''; my$url='./7wiki.cgi'; tie(my%DB,'AnyDBM_File','wiki',O_CREAT|O_RDWR,0666)or die; if ($msg){$DB{$id}=$msg} $msg=escapeHTML $DB{$id}; untie(%DB);print header; print qq(<form action="$url?$id" method="POST"><input type="submit"><b>$id</b> <br /><textarea name="msg" rows="6" cols="60">$msg</textarea></form><hr />); $msg=~s/\b([A-Z][a-z]+([A-Z][a-z]+)+)\b/<a href="$url?$1">$1<\/a>/g;print $msg;
- 67 名前:nobodyさん mailto:sage [02/11/21 19:40 ID:???]
- >>66
#!/usr/local/bin/perl -w use strict;use CGI':standard';use AnyDBM_File;use Fcntl;tie(my%D,'AnyDBM_File', '7wiki',O_CREAT|O_RDWR,0666)||die;my$i=$ENV{QUERY_STRING}||'FrontPage';$_= escapeHTML($D{$i}=param('m')||$D{$i});untie%D;print header(),qq(<form action="7wiki.cgi?$i" method="post"><input type="submit" /><b>$i</b><br /> <textarea name="m" rows="6" cols="60">$_</textarea></form><hr />); s|\b([A-Z][a-z]+([A-Z][a-z]+)+)\b|<a href="7wiki.cgi?$1">$1</a>|g;print \b 要る?
- 68 名前:nobodyさん [02/11/21 22:28 ID:mGPCTII6]
- >>67
thx ... WikiName の正規表現は \b([A-Z][a-z]+){2,}\b って書けるみたいだね。 \b 要るかどうかしらないけど、個人的には欲しい。 # c2.com/cgi/wiki?LinkPattern > s|\b([A-Z][a-z]+([A-Z][a-z]+)+)\b|<a href="7wiki.cgi?$1">$1</a>|g; < s|\b([A-Z][a-z]+){2,}\b|a "7wiki.cgi?$1",$1|ge; 多少、汚くても良いのなら、 - use Fcntl やめて O_CREAT|O_RDWR は定数で - s/standard/all/; tr/"//d; s/AnyDBM/DBM/g; s' /''g; - s/use strict;/; s/\bmy\b/g; - etc .. ・・・で、4〜5行くらいにはダイエット出来るかな。 短いwiki・・・他に、こんなのもあるよ。 c2.com/cgi/wiki?ShortestWikiContest
- 69 名前:nobodyさん mailto:sage [02/11/21 22:40 ID:???]
- 間違えた・・
s|\b([A-Z][a-z]+){2,}\b|a{href=>"7wiki.cgi?$1"},$1|ge;
- 70 名前:nobodyさん mailto:sage [02/11/21 22:52 ID:???]
- 括弧わすれてた・・・ゴメン(再び修正
\b(([A-Z][a-z]+){2,})\b
- 71 名前:nobodyさん mailto:sage [02/11/22 07:28 ID:???]
- use CGI':all';use SDBM_File;$i='7wiki.cgi';$j=$ENV{QUERY_STRING}||'FrontPage';
tie%D,'SDBM_File',$i,258,438or die;$_=$D{$j}=param('m')||$D{$j};untie%D;put header,startform('post',"$i?$j"),submit,b($j),br,textarea('m',$_,6,60),endform ,hr;$_=escapeHTML$_;s|\b(([A-Z][a-z]+){2,})\b|a{href=>"$i?$1"},$1|ge;put$_
- 72 名前:nobodyさん mailto:sage [02/11/22 14:36 ID:???]
- Good job.
- 73 名前:nobodyさん mailto:sage [02/11/22 18:30 ID:???]
- 折角なので副産物も(ワンライナーだけど
れぎゅれーしょん ちぇっか usage: ./7rc.pl < target_script.pl #! perl -nw chomp;length>79||$.>7?die:print"line $. OK\n"
- 74 名前:nobodyさん mailto:sage [02/11/24 15:39 ID:???]
- >>71
use Fcntl; はいらないのか?
- 75 名前:nobodyさん mailto:sage [02/11/24 17:47 ID:???]
- use Fcntl; O_CREAT|O_RDWR を纏めて 286(tie の引数
定数部分は環境依存するかも知れないので /usr/include/sys/fcntl.h を参照
- 76 名前:nobodyさん mailto:sage [02/11/25 00:58 ID:???]
- DB_File なら use した時点で O_CREAT も O_RDWR も使えるようになる罠。
use DB_File; print join '/', O_CREAT => O_CREAT, O_RDWR => O_RDWR; そして O_CREAT は実際 512 だったり 256 だったりする罠。
- 77 名前:nobodyさん mailto:sage [02/11/25 06:28 ID:???]
- 余った行で僅かばかり実用的にしてみる。
#!/usr/local/bin/perl -w use CGI qw(:all escapeHTML);use DB_File;$j=$ENV{QUERY_STRING}||'FrontPage';($f) =$0=~m|([^/]+)(\.cgi)$|;open(L,'+<&='.($d=tie%D,'DB_File',$f,O_CREAT|O_RDWR or die)->fd)||die;eval{flock L,2};$_=escapeHTML($m=$D{$j}=param('m')||$D{$j});$d-> sync;$d=untie%D;s/\b(([A-Z][a-z]+){2,})/a{href=>"$f.cgi?$1"},$1/ge;s/\x0d\x0a| \x0d|\x0a/<br>/gx;put header,title("$f - $j"),startform('post',"$f.cgi?$j"), submit,b($j),br,textarea('m',$m,6,60),endform,hr,$_ 陽に輸入してやらないと上のタイミングで escapeHTML 使えなかったよ。 (FreeBSD 4.7R, Perl 5.005_03, CGI.pm 2.89)
- 78 名前:nobodyさん mailto:sage [02/11/25 23:38 ID:???]
- #! perl
use CGI':all';$w='\b(([A-Z][a-z]+){2,})';($p)=($ENV{QUERY_STRING}||'FrontPage') =~/$w/;$f='7wiki.cgi';$o=-f$p?'<':'>';open F,"+$o$p"or die;eval{flock F,2};read F,$m,-s$p;$_=escapeHTML($m=param('m')||$m);seek F,0,0;print F $m;close F;$_.=hr .ul map{li"".localtime time-86400*-M," $_"}sort{-M$a<=>-M$b}grep{/^$w$/}glob"*" ;s/$w/a{href=>"$f?$1"},$1/ge;put header,start_html($p),h1($p),startform('post', "$f?$p"),textarea('m',$m,6,60),br,submit,endform,hr,pre($_),end_html 一覧を付けてみた・・・(残り:1行と10字 :all tag で全部輸入できなかった?:html2 とかでも無理かな?
- 79 名前:nobodyさん mailto:sage [02/11/26 00:26 ID:???]
- < $_=escapeHTML($m=param('m')||$m);seek F,0,0;print F $m;
> $_=escapeHTML $m=param('m')||$m;seek F,0,0;print F$m;
- 80 名前:nobodyさん mailto:sage [02/11/26 00:30 ID:???]
- < .ul map{li"".localtime time-86400*-M," $_"}sort{-M$a<=>-M$b}grep{/^$w$/}glob"*"
> .ul map{li"".localtime time-86400*-M,$_}sort{-M$a<=>-M$b}grep{/^$w$/}glob"*"
- 81 名前:74 mailto:sage [02/11/26 00:51 ID:???]
- >>75
勉強になりました。
- 82 名前:nobodyさん mailto:sage [02/11/26 01:21 ID:???]
- use CGI':all';$w='\b(([A-Z][a-z]+){2,})';($p)=($ENV{QUERY_STRING}||FrontPage)=~
/$w/;$f=script_name;open(F,'+'.(-f$p?'<':'>').$p)||die;eval{flock F,2};read F,$ m,-s$p;$_=escapeHTML$m=param(z)||$m;seek F,0,0;print F$m;close F;$_.=hr.ul map{ li"".localtime time-86400*-M,$_}sort{-M$a<=>-M$b}grep{/$w$/}glob'*';s/$w/a{href =>"$f?$1"},$1/ge;put header,start_html($p),h1($p),startform(0,"$f?$p"),textarea (z,$m,6,60),br,submit,endform,hr,pre($_),end_html
- 83 名前:nobodyさん mailto:sage [02/11/26 04:49 ID:???]
- >>78
ごめん、CGI.pm 2.89 置いたパスを use lib し忘れたままテストしてた。 5.005_03 同梱のは 2.46 で、この辺だと escapeHTML はどのタグにも 含まれてない。submit() を呼んだ時点で main に定義されるのかな。 #! perl use CGI':all';$f=script_name;$w='\b(([A-Z][a-z]+){2,})';($p)=($ENV{QUERY_STRING }||FrontPage)=~/$w/;open(F,-f$p?"+<$p":"+>$p")||die;eval{flock F,2};$/=();$_= escapeHTML$m=param(z)||<F>;truncate F,0;seek F,0,0;print F$m;close F;$_=join hr ,endform,pre($_),ul map{li localtime((stat$_)[9])." $_"}sort{-M$a<=>-M$b}grep /$w$/,<*>;s/$w/a{href=>"$f?$1"},$1/eg;put header,start_html($p),startform(0, "$f?$p"),h1($p),textarea(z,$m,6,60),br,submit,$_,end_html 1 byte 長くなった。むぅ。
- 84 名前:nobodyさん mailto:sage [02/11/26 06:11 ID:???]
- 書き忘れたけど、78-82 はWin/ActivePerlで作ってました。
他の環境に移したら CGI.pm 2.56 で同様のエラーが出たので パッケージ名をつけてCGI::escapeHTMLで対応。 もしくは、モジュールを新しくする。でいいかな>対策 NOTE QUERY_STRING を PATH_INFO に変更して url の区切りを ? -> / に。 # 勿論、 s/// のスラッシュも他の記号に変更する。 (stat)[9] BUG ページ読むだけでも書き込みしてるので タイムスタンプが。。
- 85 名前:nobodyさん mailto:sage [02/11/26 22:06 ID:???]
- >>84
パッケージ名付けた方が優しいかな。> escapeHTML タイムスタンプのバグフィクス版。以下の環境で動作。 ・Perl 5.005_03, CGI.pm 2.46 ・Win98SE, AN-HTTPD 1.41g ・FreeBSD 4.7R, Apache/1.3.27 #!/usr/local/bin/perl use CGI':all';$w='\b(([A-Z][a-z]+){2,})';($p)=($ENV{PATH_INFO}||FrontPage)=~/$w /x;if(open F,($m=param z)?">$p":$p){eval{flock F,2};$/=();$_=CGI::escapeHTML($m ||=<F>);truncate F,0;seek F,0,0;print F$m;close F}opendir D,'./';$_=join hr, endform,pre($_),ul map{li localtime((stat)[9])." $_"}sort{-M$a<=>-M$b}grep/$w$/ ,readdir D;$f=script_name;s|$w|a{href=>"$f/$1"},$1|eg;put header,start_html($p) ,startform(0,"$f/$p"),h1($p),textarea(z,$m,6,60),br,submit,$_,end_html AN-HTTPD だとグロブ効かなかったので readdir に変更。 i-httpd だと PATH_INFO 使えなかったけど、まぁこれは 少数派という事で。あともしかしたら MacPerl が truncate で引っかかるやも。
- 86 名前:nobodyさん mailto:sage [02/11/27 00:19 ID:???]
- CGI.pm 2.752, perl 5.005_03 build for sun4-solaris Apache 1.3.27
#! perl -w use CGI':all';$w='\b(([A-Z][a-z]+){2,})';$f=script_name;$/=();($p)=(path_info|| FrontPage)=~/$w/;opendir D,'.';if(open F,($m=param z)?">$p":$p){eval{flock F,2} ;$_=CGI::escapeHTML$m||=<F>;eval{truncate F,0};seek F,0,0;print F$m;close F}$_. =hr.ul((map{li"".localtime((stat)[9]),$_}sort{-M$a<=>-M$b}grep/$w$/,readdir D)[ 0..9]);s|$w|a{href=>"$f/$1"},$1|eg;put header,start_html$p),h1($p),startform(0 ,"$f/$p"),textarea(z,$m,6,60),br,submit,endform,pre($_),end_html 一覧の表示数制限機能追加。 truncate は eval で対応できるかな?>MacPerl
- 87 名前:nobodyさん mailto:sage [02/11/27 01:56 ID:???]
- #! perl -w
use CGI':all';$w='\b(([A-Z][a-z]+){2,})';$/=();($p)=(path_info||FrontPage)=~/$w /x;$f=script_name."/";opendir D,'.';if(open F,($m=param z)?">$p":$p){eval{flock F,2};$_=CGI::escapeHTML$m||=<F>;eval{truncate F,0};seek F,0,0;print F$m;close F }$_.=hr.ul((map{li"".localtime((stat)[9]),$_}sort{-M$a<=>-M$b}grep/$w$/,readdir D)[0..14]);s|$w|a{href=>$f.$1},$1|eg;put header,start_html($p),h1($p),startform (0,$f.$p),textarea(z,$m,6,60),br,submit,endform,pre($_),end_html -1byte
- 88 名前:nobodyさん mailto:sage [02/11/27 06:40 ID:???]
- #! perl -w
use CGI':all';@c=qw/white eeeeff/;$d=0;$e=path_info();$f=script_name;*p=*param; $h=DELETE;$i=RENAME;$j=COPY;$k=FILES;opendir D,"./$e";if(p$h){unlink p$k}put header,start_html('7files'),startform(0,$t),table(Tr([th({bgcolor=>ddddff},['', qw/Name Size LastModified/]),(map{td({bgcolor=>$c[$d++%2]},[checkbox($k,0,$_,'' ),g($_)." ".a({href=>"$f/$_"},$_),-s,"".localtime((stat)[9])])}sort{$a cmp $b} grep/^[^.]/,readdir D)])),(map{submit$_}($i,$j,$h)),endform,end_html;sub g{$t= -d$_[0]?'folder':'text';img{src=>"/icons/$t.gif",alt=>$t}} ファイル削除 CgI あぱっち用 RENAME と COPY は未実装。もうちょっと痩せないとなぁ・・ WikiName のリンク処理(存在しないページのリンクは?に。 s|$w|(-f$1?'':$1).a{href=>$f.$1},-f$1?$1:'?'|eg;
- 89 名前:nobodyさん mailto:sage [02/11/27 08:37 ID:???]
- 検索エンジン
<? fopen("www.yahoo.co.jp");?>
- 90 名前:nobodyさん mailto:sage [02/11/27 09:55 ID:???]
- >>89
Warning: fopen() expects at least 2 parameters, 1 given in ...
- 91 名前:nobodyさん mailto:sage [02/11/27 20:42 ID:???]
- 7wiki.cgi 、一旦まとめ。(w
#! perl use CGI':all';$w='\b(([A-Z][a-z]+){2,})';($p)=(path_info||FrontPage)=~/$w/;$/=( );$f=script_name."/";opendir D,".";if(open F,($m=param z)?">$p":$p){eval{flock F,2};$_=CGI::escapeHTML($m||=<F>);eval{truncate F,0};seek F,0,0;print F$m;close F}$_=pre($_).hr.ul map{li"".localtime((stat)[9]),$_}sort{-M$a<=>-M$b}grep/$w$/, readdir D;s|$w|(!-f$1&&$1).a{href,$f.$1},-f$1?$1:"?"|eg;put header,start_html( $p),h1($p),startform(0,$f.$p),textarea(z,$m,6,60),br,submit,endform,$_,end_html ・bare word が存在するので perl -w は不可。 ・古い CGI.pm は escapeHTML を輸出しないので括弧が必要。
- 92 名前:nobodyさん mailto:sage [02/11/28 03:13 ID:???]
- use CGI':all';$w='\b(([A-Z][a-z]+){2,})';$f=script_name."/";opendir D,".";$/=()
;($p)=(path_info||FrontPage)=~/$w/;if(open F,($m=param z)?">$p":$p){eval{flock F,2};$_=submit.endform.hr.pre CGI::escapeHTML($m||=<F>);eval{truncate F,0};seek F,0,0;print F$m;close F}$_=br.$_.hr.ul map{li"".localtime((stat)[9]),$_}sort{-M $a<=>-M$b}grep/$w$/,readdir D;s|$w|(!-f$1&&$1).a{href,$f.$1},-f$1?$1:"?"|eg;put header,start_html($p),h1($p),startform(0,$f.$p).textarea(z,$m,6,60),$_,end_html -w は >>86 の環境では付けないとCGIとして動かなかったんだけど・・ どうしてだろう?z maybe crash って warning 出すのはわかっていたけど ちゃんと動いていたような気がする。(エラーログ今度ちゃんと見て来よう。 TextRule に Pod::Htmlを使おうとしたが、 pod2html はファイルを対象としているため実装を断念。 残り一行じゃ TextRuleは辛いかな・・URLのリンクくらいなら追加出来そう・・?
- 93 名前:nobodyさん mailto:sage [02/11/28 03:23 ID:???]
- あっ バグ・・・今気付いた。
open が失敗した時困るかな >>92
- 94 名前:nobodyさん mailto:sage [02/11/28 05:30 ID:???]
- >>88
アイコンと th 無くして、あと目に付いたトコだけザッと。 #! perl -w use CGI':all';*p=*param;$d=path_info;$t=opendir D,".$d";$F=F;($c=$f=script_name )=~s|/[^/]+$||;$R=REN;$C=CP;$D=DEL;p$D&&unlink p$F;put header,start_html(7files ),startform(0,$f),table(Tr[map{$i="$d/$_";($l,$s)=-d".$i"?($f.$i,'DIR'):($c.$i, -s _);td({bgcolor,(white,eeeeff)[$t++%2]},[checkbox($F,0,$_,''),a({href,$l},$_) ,$s,"".localtime((stat)[9])])}sort grep!/^\./,readdir D]),(map{submit$_}$R,$C, $D),endform,end_html
- 95 名前:nobodyさん mailto:sage [02/11/28 05:55 ID:???]
- >>94 修正…。
use CGI':all';($c=$f=script_name)=~s|/[^/]+$||;$d=path_info;$t=opendir D,".$d"; $F=F;$M=MV;$C=CP;$R=RM;*p=*param;p$D&&unlink p$F;put header,start_html('7files' ),startform(0,$f),table(Tr[map{$i="$d/$_";($l,$s)=-d".$i"?($f.$i,'DIR'):($c.$i, -s _);td({bgcolor,(white,eeeeff)[$t++%2]},[checkbox($F,0,$_,''),a({href,$l},$_) ,$s,"".localtime((stat)[9])])}sort grep!/^\./,readdir D]),(map{submit$_}$M,$C, $R),endform,end_html
- 96 名前:nobodyさん mailto:sage [02/11/28 06:10 ID:???]
- >>92
成る程、そういう環境もありますか。 warning 吐きまくるのはヤだなぁと思っただけなんで、 shebang line は適宜変更でいいですかのぅ。 つか valid な HTML にはあまりこだわってませんか。 URL リンクはこうかな…。 s|([\w!#-;=?-@~]+)|a{href,$1},$1|eg; >>93 困りました。:)
- 97 名前:nobodyさん mailto:sage [02/11/28 11:46 ID:???]
- >困りました。:)
ごめん。パズルに夢中でperl -cしかチェックしてなかったw 書きこみ、 新規ページ作成 テスト、以後気を付けます。テスト書こうっと HTMLの構文チェックもしてません。出力はCGI.pm任せなので、 少なくともwelformedにはなってるはずだけど・・ 7wiki.cgi 6行76桁 use CGI':all';$w='\b(([A-Z][a-z]+){2,})';$/=();$f=script_name;($p)=(path_info|| FrontPage)=~/$w/;opendir D,".";if(open F,($m=param z)?">$p":$p){eval{flock F,2} ;eval{truncate F,0};seek F,0,0;print F$m||=<F>;close F}$_=pre CGI::escapeHTML($ m).hr.ul map{li"".localtime((stat)[9]),$_}sort{-M$a<=>-M$b}grep/$w$/,readdir D; s|$w|(!-f$1&&$1).a{href,"$f/$1"},-f$1?$1:"?"|eg;put header,start_html($p),h1($p ),startform(0,"$f/$p").textarea(z,$m,6,60),br,submit.endform.hr.$_,end_html
- 98 名前:nobodyさん mailto:sage [02/11/29 06:36 ID:???]
- >>97
うん、well-formed ではあるけど、pre に hr や ul が入ってるから valid じゃないよね。 別にいちゃもん付けてるんじゃ無くて、七行に収まってる状態で更に 数 byte の為に valid な出力を諦めるか否かは好みの問題だから、 何としても縮める方針でやってるのかな、と。挙動が変更されたコード 見たら、何を意図してるか大体分かるでしょ。 で、俺は shebang 込みで七行派だから、7wiki.cgi に関しては >>97 か 下ので完成気分。shebang 無し七行で続けるなら、それはそれで参加 させてもらうけどね。 #! perl -w use CGI':all';$w='\b(([A-Z][a-z]+){2,})';$/=();$f=script_name;($p)=(path_info|| FrontPage)=~/$w/;opendir D,".";if(open F,($m=param z)?">$p":$p){eval{flock F,2} ;eval{truncate F,0};seek F,0,0;print F$m||=<F>;close F}$_=pre(CGI::escapeHTML($ m)).hr.ul map{li"".localtime((stat)[9]),$_}sort{-M$a<=>-M$b}grep/$w$/,readdir D ;s|$w|(!-f$1&&$1).a{href,"$f/$1"},-f$1?$1:"?"|eg;put header,start_html($p),h1($ p),startform(0,"$f/$p"),textarea(z,$m,6,60),br,submit,endform,hr,$_,end_html
- 99 名前:nobodyさん mailto:sage [02/11/29 08:01 ID:???]
- 7files.cgi
use CGI':all';*p=*param;($c=$f=script_name)=~s|/[^/]+$||;$d=path_info;opendir D ,$e=".$d/";sub cp{}$F=p(F);$N=$e.p(N);($_=p(S))=~/MV/?rename$F,$N:/CP/?cp$F,$N: /RM/?unlink$F:0;put header,start_html('7files'),startform(0,"$f$d"),table(Tr[ map{$i="$d/$_";($l,$s)=-d".$i"?($f.$i,DIR):($c.$i,-s _);td({bgcolor,(silver, white)[$t++%2]},[checkbox(F,0,".$i",''),a({href,$l},$_),$s,"".localtime((stat)[ 9])])}sort grep!/^\./,readdir D]),textfield(N),map(submit(S,$_),MV,CP,RM), endform,end_html rename 実装。copy が悩み処ですな。
- 100 名前:nobodyさん mailto:sage [02/11/29 08:04 ID:???]
- rename の仕方:
変更したいファイルにチェック、textfield に変更後の名前を入れて MV
- 101 名前:nobodyさん mailto:sage [02/11/29 09:06 ID:???]
- >>98
お疲れ様 && ありがとう。色々と勉強になりました。 no strict で bare word 使い始めた当たりから 短くすることを優先させてました。use strictなしって時点で すでに気持ち悪かったwので「汚くても動けばいいや」って感じだった HTMLもチェックしていなかった位だから、当然拘っていませんでした (HTMLは、7行って時点で最初から諦めていたかもしれない ただ、valid な出力にするとなると、 CGI.pm の textarea が rows,colsの属性の値をクオートしない。 br, hr は、p,div,h[1-6] 等の親要素が必要 等々、新たな課題が出てくるんじゃないかな?
- 102 名前:nobodyさん mailto:sage [02/11/29 09:30 ID:???]
- 動作チェックしてないけど。
use File::Copy; sub cp{ map{ -f$_&©($_,"copy_of_$_") }p(F) }
- 103 名前:nobodyさん mailto:sage [02/11/29 11:06 ID:???]
- >>101
ありゃ。本当に全然拘ってなかったのね。w なら 3 文字加えてピッタリ 6x79 。 use CGI':all';$w='\b(([A-Z][a-z]+){2,})';$/=();$f=script_name;($p)=(path_info|| FrontPage)=~/$w/;opendir D,".";if(open F,($m=param z)?">$p":$p){eval{flock F,2} ;eval{truncate F,0};seek F,0,0;print F$m||=<F>;close F}$_=pre(CGI::escapeHTML($ m)).hr.ul map{li"".localtime((stat)[9]),$_}sort{-M$a<=>-M$b}grep/$w$/,readdir D ;s|$w|(!-f$1&&$1).a{href,"$f/$1"},-f$1?$1:"?"|eg;put header,start_html($p),h1($ p),startform(0,"$f/$p"),p(textarea(z,$m,6,60),br,submit),endform,hr,$_,end_html ・hr はブロック要素なので無問題。 ・form 内の各要素がインライン要素なので p で囲む。 ・textarea の属性値クォートは 7wiki.cgi 側でなく CGI.pm 側の 問題だし、最近の CGI.pm なら直ってるので考えない。w これでかなり valid.
- 104 名前:nobodyさん mailto:sage [02/11/29 11:54 ID:???]
- >>102
そか…モジュールという手が…。(´Д`; use CGI':all';use File::Copy;$d=path_info;($c=$f=script_name)=~s|/[^/]+$||;*p=* param;opendir D,$e=".$d/";$F=p(F);$N=$e.p(N);$w=($_=p(S))=~/MV/?rename$F,$N:/CP /x?copy$F,$N:/RM/?unlink$F:1;put header,start_html('7files'),startform(0,"$f$d" ),table(Tr[map{$i="$d/$_";($l,$s)=-d".$i"?($f.$i,DIR):($c.$i,-s _);td({bgcolor, (silver,white)[$t++%2]},[checkbox(F,0,".$i",''),a({href,$l},$_),$s,"".localtime ((stat)[9])])}sort grep!/^\./,readdir D]),textfield(N),map(submit(S,$_),MV,CP, RM),endform,end_html copy の仕方も rename と一緒。
- 105 名前:nobodyさん mailto:sage [02/11/30 03:07 ID:???]
- > ありゃ。本当に全然拘ってなかったのね。w
えぇ。行末の桁揃えに夢中だったので。。w use CGI':all';use File::Copy;$d=path_info;*p=*param;opendir D,$e=".$d/";$F=p(F) ;$N=$e.p(N);($_=p(S))=~/MV/?move$F,$N:/CP/?copy$F,$N:/RM/?unlink p(F):1;($c=$f= script_name)=~s|/[^/]+$||;put header,start_html('7files'),startform(0,$f.$d), table(Tr[map{$i="$d/$_";($l,$s)=-d".$i"?($f.$i,DIR):($c.$i,-s _);td({bgcolor,( white,silver)[$t^=1]},[checkbox(F,0,".$i",''),a({href,$l},$_),$s,"".localtime(( stat)[9])])}sort grep!/^\./,readdir D]),textfield(N),map(submit(S,$_),MV,CP,RM) ,endform,end_html - rename --> File::Copy#move に変更。 ファイルをチェックして、テキストにディレクトリ名を入れてMVで ファイルをディレクトリに移動します。 = TODO mkdir, rmdir
- 106 名前:nobodyさん mailto:sage [02/12/01 01:22 ID:???]
- mkdir, rmdir 実装。特にヒネりもなく…。
use CGI':all';use File::Copy;$d=path_info;($c=$f=script_name)=~s|/[^/]+$||;*p=* param;opendir D,$e=".$d/";$F=p(F);$N=$e.p(N);$_=p(S);/MV/?move$F,$N:/CP/?copy$F ,$N:/RM/?unlink$F:/MD/?mkdir$N,511:/RD/?rmdir$F:1;put header,start_html('7files '),startform(0,$f.$d),table(Tr[map{$i="$d/$_";($l,$s)=-d".$i"?($f.$i,DIR):($c.$ i,-s _);td({bgcolor,(white,silver)[$t^=1]},[checkbox(F,0,".$i",''),a({href,$l}, $_),$s,"".localtime((stat)[9])])}sort grep!/^\./,readdir D]),textfield(N),map( submit(S,$_),MV,CP,RM,MD,RD),endform,end_html table を何とかせんと、劇的には縮まらな気。
- 107 名前:nobodyさん mailto:sage [02/12/01 05:42 ID:???]
- bgcolorを削って、chdirにしてみた・・
use CGI':all';use File::Copy;$d=path_info;*p=*param;chdir".$d";$N=p N;$F=p F;$_ =p S;/MV/?move$F,$N:/CP/?copy$F,$N:/RM/?unlink$F:/MD/?mkdir$N,511:/RD/?rmdir$F: 1;opendir D,".";($c=$f=script_name)=~s|/[^/]+$||;put header,start_html('7files' ),startform(0,$f.$d),table(Tr[map{td[checkbox(F,0,$_,''),a({href,-d$_?"$f$d/$_" :"$c$d/$_"},$_),-s||DIR,"".localtime((stat)[9])]}sort grep!/^\./,readdir D]), textfield(N),map(submit(S,$_),MV,CP,RM,MD,RD),endform,end_html p(F); を p F; って表記するのも環境/バージョンに依存するのかな?
|

|