七行プログラミング (452レス)
上下前次1-新
102(1): nobodyさん [sage] 02/11/29 09:30 ID:??? AAS
 動作チェックしてないけど。 
  
 use File::Copy; 
 sub cp{ map{ -f$_&©($_,"copy_of_$_") }p(F) }
103: nobodyさん [sage] 02/11/29 11:06 ID:??? AAS
 >>101101(1): nobodyさん [sage] 02/11/29 09:06 ID:??? AAS
 >>98 
 お疲れ様 && ありがとう。色々と勉強になりました。 
  
 no strict で bare word 使い始めた当たりから 
 短くすることを優先させてました。use strictなしって時点で 
 すでに気持ち悪かったwので「汚くても動けばいいや」って感じだった 
  
 HTMLもチェックしていなかった位だから、当然拘っていませんでした 
 (HTMLは、7行って時点で最初から諦めていたかもしれない 
  
 ただ、valid な出力にするとなると、 
 CGI.pm の textarea が rows,colsの属性の値をクオートしない。 
 br, hr は、p,div,h[1-6] 等の親要素が必要 
 等々、新たな課題が出てくるんじゃないかな?  
ありゃ。本当に全然拘ってなかったのね。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さん [sage] 02/11/29 11:54 ID:??? AAS
 >>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さん [sage] 02/11/30 03:07 ID:??? AAS
 > ありゃ。本当に全然拘ってなかったのね。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さん [sage] 02/12/01 01:22 ID:??? AAS
 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さん [sage] 02/12/01 05:42 ID:??? AAS
 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; って表記するのも環境/バージョンに依存するのかな?
108(1): nobodyさん [sage] 02/12/01 07:42 ID:??? AAS
 give up 気味。(´Д`; 
  
 use CGI':all';use File::Copy;$d=path_info;*b=*param;chdir".$d";$N=b N;$F=b F;%m 
 =qw(MV move$F,$N CP copy$F,$N RM unlink$F MD mkdir$N,511 RD rmdir$F);eval$m{b S 
 };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:$c). 
 "$d/$_"},$_),-s||DIR,"".localtime((stat)[9])]}sort grep!/^\./,readdir D]), 
 textfield(N),(map{submit S,$_}keys%m),endform,end_html 
  
 param のエイリアスを b にしたのは、p 要素の p() を 
 使えるようにする為の布石。 
  
 > p(F); を p F; って表記 
 大丈夫っぽいです。 
109(1): nobodyさん [sage] 02/12/01 08:40 ID:??? AAS
 ディレクトリは別にサイズ取れない訳じゃないので 
 -s||DIR は駄目ですな…。 
110: nobodyさん [sage] 02/12/01 12:51 ID:??? AAS
 >109 
 Win/ActivePerlだとディレクトリのサイズ0が返ってきていた 
 これも環境に依存するのか。。 -d _?DIR:-s _ でok ? 
  
 use CGI':all';use File::Copy;$_='$d=path_info;*b=*param;chz".$d";$N=b N;$F=b F; 
 %m=qw(MV move$F,$N CP copy$F,$N RM unlink$F MD mkz$N,511 RD rmz$F);eval$m{b S} 
 ;openz 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:$c) 
 ."$d/$_"},$_),-d _?DIR:-s _,"".localtime((stat)[9])]}sort grep/^[^.]/,readz 
 D]),textfield(N),(map{submit S,$_}keys%m),endform,end_html';s/z/dir/g;eval 
  
 置換してスクリプト長くなってるし。。。そろそろ give up 
>108 のファイルサイズを直して、完成かな
111: nobodyさん [sage] 02/12/01 14:28 ID:??? AAS
 せっかくだから空ファイル作成 (MF) など付けてみる。 
  
 use CGI':all';use File::Copy;$d=path_info;*b=*param;chdir".$d";$N=b N;$F=b F;%m 
 =(qw(MV move$F,$N CP copy$F,$N RM unlink$F MD mkdir$N,511 RD rmdir$F MF),'open 
 F,">$N"');eval$m{b S};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:$c)."$d/$_"},$_),-d$_?DIR:-s,"".localtime((stat)[9])]}sort grep! 
 /^\./,readdir D]),p(textfield(N),map{submit S,$_}keys%m),endform,end_html 
112: nobodyさん [sage] 02/12/02 07:11 ID:??? AAS
 Rss出力と検索機能 4 7wiki.cgi 
  
 ---- 7search.cgi 
 use CGI':all';$f=script_name;$s=param S;opendir D,".";if($s){map{$t=$_;if(open 
 F,$t){eval{flock F,2};while(<F>){chomp;if(/\Q$s\E/io){push(@r,li(a{href,$t},$t) 
 ," - $_");last}}close F}}sort grep/^[^.]+$/,readdir D}put header,start_html( 
 '7search'),startform(0,$f),p(textfield(S),submit),endform,hr,ul(@r),end_html 
  
 ---- 7rss.cgi 
 use CGI qw/:all channel item textinput link name/;($p)=script_name=~m|(.+)/[^/] 
 +$|x;$s=server_name.$p;opendir D,".";$w='7wiki';put"Content-type:text/xml\n\n", 
 qq|<?xml version="1.0"?>\n<rdf:RDF xmlns:rdf="外部リンク:www.w3c.org|, 
 q|df-syntax-ns#" xmlns="外部リンク:my.netscape.com">|,channel(title 
 ($w),link"$s/$w.cgi"),(map{item(title($_),link"$s.$_")."\n"}sort grep/^[^.]+$/, 
 readdir D),textinput(title($w),link("$s/7search.cgi"),name(S)),"\n</rdf:RDF>"; 
  
 # CGI.pm v2.69 以降 or c2.67 wiz xhtml tag 
 - link() の動作がちょっと不安。 
113: nobodyさん [sage] 02/12/02 07:39 ID:??? AAS
 7rss.cgi 
 > item(title($_),link"$s.$_")." 
 < item(title($_),link"$s.cgi/$_")." 
114: nobodyさん [sage] 02/12/02 08:06 ID:??? AAS
 #7search.cgi - v0.02  fixed some bugs 
 use CGI':all';($c=$f=script_name)=~s|/[^/]+$||;$s=param S;if($s){opendir D,"."; 
 map{$t=$_;if(open F,$t){eval{flock F,2};while(<F>){chomp;if(/\Q$s\E/io){push@r, 
 li(a({href,"$c/7wiki.cgi/$t"},$t)," $_");last}}close F}}sort grep/^[^.]+$/, 
 readdir D}put header,start_html('7search'),startform(0,$f),p(textfield(S), 
 submit),endform,hr,ul(@r),end_html 
  
 #7rss.cgi - v0.02  show latest 15 articles 
 use CGI qw/:all channel item textinput link name/;($p)=script_name=~m|(.+)/[^/] 
 +$|x;$s=server_name.$p;opendir D,".";$w='7wiki';put"Content-type:text/xml\n\n", 
 qq|<?xml version="1.0"?>\n<rdf:RDF xmlns:rdf="外部リンク:www.w3c.org|, 
 q|df-syntax-ns#" xmlns="外部リンク:my.netscape.com">|,channel(title 
 ($w),link"$s/$w.cgi"),(map{item title($_),link"$s.cgi/$_"}sort{-M$a<=>-M$b}grep 
 /^[^.]+$/,readdir D)[0..14],textinput(title($w),link("$s/7search.cgi"),name S), 
 "\n</rdf:RDF>";
115: nobodyさん [sage] 02/12/02 17:31 ID:??? AAS
 # 7rss.cgi v0.03 
  
 use CGI qw/:all channel item textinput link name/;opendir D,".";$w='7wiki';($p) 
 =url=~m|^(.+)/[^/]+$|;put header('text/xml'),qq|<?xml version="1.0"?>\n<rdf:RD| 
 ,'F xmlns:rdf="外部リンク:www.w3c.org" xmlns="外部リンク:my.' 
 ,'netscape.com/rdf/simple/0.9/">',channel(title($w),link"$p/$w.cgi"),(map{item 
 title($_),link"$p/$w.cgi/$_"}sort{-M$a<=>-M$b}grep/^[^.]+$/,readdir D)[0..14], 
 textinput(title($w),link("$p/7search.cgi"),name S),"\n</rdf:RDF>"; 
116: nobodyさん [] 02/12/21 03:14 ID:RF/wn3c8(1) AAS
 7threadキボンヌ 
117(1): nobodyさん [sage] 02/12/30 09:38 ID:??? AAS
 拙作をまとめていた isweb のサイト、広告ウザいので引っ越し。 
 ついでに配布体裁整え。外部リンク:calorymate.s15.xrea.com 
  
 7wiki と 7files 、参加作という事でサイトに載っけていいですか? 
118: 'a';$happy = new Year; [sage] 02/12/31 15:36 ID:??? AAS
 >>117 
 Take It free. 
  
 <一応、ベースとなるものを書いたモノです 
 自分が代表してレスしていいのかわかんないけど && 
 このスレッド的にはどうなのか知らないけど・・・、 
  
 このまま過去ログに埋もれて日の目を見ないよりも、 
 公開して保守して貰えるのなら、そっちの方がいいよな 
 て事でお願いします。 
 ついでに、7rss, 7search も載せてもらえるとうれしいな。 
package Year;sub new{bless{},shift} 
119: nobodyさん [sage] 03/01/15 02:35 ID:??? AAS
 忘れた頃に。(w 
  
 --- 7search.cgi 
 use CGI':all';put header,start_html('7search'),startform(0,$_=script_name),p( 
 textfield(S),submit),endform,hr;if($s=param S){m|/[^/]+$|;$c=$`;opendir D,"."; 
 for(sort grep/^\w+$/&-f,readdir D){if(open F,$t=$_){eval{flock F,2};/\Q$s\E/io 
 &&push(@r,li(a({href,"$c/7wiki.cgi/$t"},$t)," $_"))&&next while<F>;}}@r&&put ul 
 @r}put end_html 
  
 --- 7rss.cgi 
 use CGI qw/:all channel item textinput link name/;opendir D,".";$w='7wiki';url 
 =~m|[^/]+$|;$p=$`;put header('text/xml'),join"\n",'<?xml version="1.0"?>', 
 '<rdf:RDF xmlns:rdf="外部リンク:www.w3c.org" xmlns="http' 
 .'外部リンク:my.netscape.com">',channel(title($w),link"$p$w.cgi"),(map{ 
 item title($_),link"$p$w.cgi/$_"}sort{-M$a<=>-M$b}grep/^\w+$/&-f,readdir D)[0.. 
 14],textinput(title($w),link($p.'7search.cgi'),name S),'</rdf:RDF>' 
  
 つー事で載せときました。 
120: 山崎渉 [(^^)sage] 03/01/15 13:41 ID:??? AAS
 (^^)           
121: nobodyさん [sage] 03/01/17 18:30 ID:??? AAS
 2ch の dat ファイル (かちゅ〜しゃのログ) を XHTML ファイルに変換。 
 外部リンク:cm.xrea.cc 
  
 $s="kat2xhtml.tmpl";sub a{'<a href="'.pop().'</a>'}sub p{'<span class="'.pop(). 
 '</span>'}while(<>){($n,$m,$d,$_,$t,$")=split/,/;$.-1||($T=$t)=~s/\s+$//;$n=$n 
 =~m|^<b>([^<]*)</b>(?:([^<]*)<b></b>)?$|?p"n\">$1":'';$n.=p"m\">$2"if$2;$n=$m=~ 
 /\@/?a"mailto:$m\">$n":$m=~/./?p qq|k" title="$m">$n|:$n;s/\x81\x97\x81\x4D/,/g 
 ;s/\s+(?:target="_blank"|$)//g;s|\s*<br>|<br />|g;s/&(?![a-z]+;)/&/g;for(@r 
 =split/(<a href="[^"]+">[^<]+<\/a>)/){(($u,$a)=m|^<a href="([^"]+)">([^<]+)</a> 
 $|x)?($u=~s/~/%7E/g&&($_=a"$u\">$a"),$a=~/^>>(\d+)/&&($_=a"#R$1\">$a")): 
 s/"/"/g}$A.="<dt>$. :<a id=\"R$.\">$n :$d</a></dt><dd>@r</dd>\n"}if(open 
 T,$s){$/='';$_=<T>;s/\%(.)/${$1}/g;print} 
  
 機能減らさないと七行に収まらないかなぁ。 
122(2): nobodyさん [] 03/03/10 02:24 ID:drTO4vMw(1) AAS
 使い方わからなかったけど…(かちゅーしゃのログ持っていないので。 
  
 '<a href="'.pop().'</a> 
 ↓ 
 "a href=\"$_[0]</a>"
123: 山崎渉 [(^^)] 03/03/13 17:04 ID:??? AAS
 (^^) 
124: nobodyさん [sage] 03/03/13 18:58 ID:??? AAS
 このスレの dat 上げといたんでテストする人はどぞ。 
 外部リンク[dat]:cm.xrea.cc 
  
 >>122 
 @_ でもいいですね。 
  
 $s="kat2xhtml.tmpl";sub a{"<a href=\"@_</a>"}sub p{"<span class=\"@_</span>"} 
 while(<>){($n,$m,$d,$_,$t,$")=split/,/;$.-1||chomp($T=$t);$n=~m|<b>([^<]*)(?: 
 </b>([^<]*))?|x;$n=($1&&p"n\">$1").($2&&p"m\">$2");$n=p qq|k" title="$m">$n|if 
 $m.0;s/\x81\x97\x81\x4D/,/g;s/\s+(?:target="\w*"|$)//g;s|\s*<br>|<br />|g;s/& 
 (?![a-z]+;)/&/gx;for(@r=split/(<a href="[^"]+">[^<]+<\/a>)/){(($u,$a)= 
 /^<a href="([^"]+)">([^<]+)/)?($_=$u=~s/~/%7E/g?a"$u\">$a":$a=~/^(?:>){1,2} 
 (\d+)/x?a"#R$1\">$a":$_):s/"/"/g}$A.="<dt>$. :<a id=\"R$.\">$n :$d</a>". 
 "</dt><dd>@r</dd>\n"}if(open T,$s){$/='';$_=<T>;s/\%(.)/${$1}/g;print} 
  
 mailto: やめてあと一行。 
125: 通りすがり [sage] 03/03/25 06:39 ID:??? AAS
 このすれ見て 
 ish思い出しますた 
126: 山崎渉 [(^^)] 03/04/17 12:25 ID:??? AAS
 (^^)    
上下前次1-新書関写板覧索設栞歴
あと 326 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s