1 :
◆fBgbHI04bQ :
03/06/07 22:30 ID:GbQKLcPE
2 :
◆fBgbHI04bQ :03/06/07 22:30 ID:GbQKLcPE
立てなくていいってば。
4 :
◆fBgbHI04bQ :03/06/07 22:31 ID:GbQKLcPE
5 :
◆fBgbHI04bQ :03/06/07 22:32 ID:GbQKLcPE
6 :
◆fBgbHI04bQ :03/06/07 22:32 ID:GbQKLcPE
7 :
◆fBgbHI04bQ :03/06/07 22:33 ID:GbQKLcPE
9 :
◆fBgbHI04bQ :03/06/07 22:35 ID:GbQKLcPE
どんまい(´∀`*
ABCDEFGという文字列からABだけ取る方法教えてください
$a = "ABCDEFG"; $b = substr($a,0,2); ネタにマジレスしときます
s/CDEFG//
17 :
12 :03/06/08 00:08 ID:???
みなさんありがとうございました! cryptで暗号化した文字の最初の2文字が邪魔でした。 助かりました。
htmlのソースを、cgiで開いて、 tetxareaに入れてかえすスクリプトですが、 ソースもhtmlのタグと勘違いして、 変になるんです。 ===================== | #!/usr/bin/perl | | | | | ←テキストエリア(ソースが表示される) | | | print "<html><body> | |====================| print "aaa"\n; ←テキストエリア外で、タグとして読んでしまう。 こうなるんですが、対処法はないですか? <>などを変えないでできる方法ってないですか?
>>18 ここはPerlのコーディングスレ。
どこが悪いのか質問したいならソースぐらい貼って。
単に方法を知りたいだけならスレ違い。
>>19 あ、違いました。
ソースファイルの中の</textarea>を
実際に出力している</textarea>と勘違いしているようです。
これを、見た目の変化を変えずに表示できませんか?
Perlと関係ねー(T_T) <を<に、>を>に変える。嫌なら諦める。
22 :
21 :03/06/08 00:33 ID:???
あら・・・・ <を<に、>を>に変える。
>>18 クロスサイトスクリプティングって聞いたことあるか? 知らないなら
そんなCGIは作るな、設置するな。いいな命令だ。
>>22 あ、その方法がありましたね。
それでやてみます。。。
でも、すべて変えるとめんどそーなので
</textarea>のところのみにしときます。
ありがとうございました。
>>23 掲示板に
<#-- exec
↑あいまい
みたいに、タグ書くやつでしょ?
フォームから送られてきた内容をPerlのevalで実行するCGIを置いているけどまずいの?
>>29 あたりまえでしょうが!何を考えてんだか・・・
どっちにしてもスレ違いなので終了するか適切なスレに移動して
32 :
nobodyさん :03/06/08 01:36 ID:XzEWy/kW
>>29 サーバは、レンタルサーバ?
最悪、損害賠償を請求される場合があります。
悪い事言わないから、
もうちょっと分かるまで勉強してから動かすか、
諦めるかしなさい。
>>32 $passwdの所でいきなり構文エラーだね。
>>24 志ねヴァカ。
とりあえず、そのHTMLのソースに
<script>(中略)</script>
なんてあったらどうなるか分かっているの?
とりあえず、>を>に、<を<に、&を&に位はやっとけ。
ついでに"も"に。
置換の順序も分からん馬鹿はいないと思うので、略。
>>38 エェー、危ないのでcryptパスワード認証つけて、ファイルの作成、編集ができるようになっているから、
<script>はないと思うけど、でもしたほうがいいかな。。。
疑問に思うんだけど、>とかしても、実際には<って表示されるんだけどなぜ?
>とかってするとただの特殊記号とみなすの?
ごめん、表示されてない。 疑問に思うんだけど、&gt;とかしても、実際には<って表示されるんだけどなぜ? &gt;とかってするとただの特殊記号とみなすの?
>>40 > は <と
< は >と。
&&は & と
" は " 表示される。
<や>がHTMLでは何を意味するのか考えれば分かると思うけど
あぁそっか。 htmlで<などを表示するときに>などを使うから、 タグではなくなるってことか。。。
$_ =~ s/</</g; $_ =~ s/>/>/g; $_ =~ s/&/&/g; $_ =~ s/"/"/g; なんで、これでできない・・・・・・ ダブルクォーテーションとアンドはできるのに・・・
&をさきにエスケープしなければだめだろ。 前の処理で<にしたものが(ry
実体参照ネタは相変わらずめちゃくちゃになるなぁ。 ちゃんと書けないんなら全角にでもしとけ。
>>38 の最終行にぴったりの質問が来ました。
超・初心者な質問だから他へ・・・と思ったらここが初心者スレだった罠。
でも、もう少し頭を使ってくれよ
51 :
nobodyさん :03/06/08 14:41 ID:vz1j93aY
質問です。 WinXP HOME EDITION(←スペルちがってたらすいません)でアクティブパール5.8なんですが、 unlink(<*.txt>)でうまくいかないんですが、Winだからですか?
foreach( <FILE> ){ # タグを特殊記号に変換 $_ =~ s/&/&amp;/g; $_ =~ s/</&lt;/g; $_ =~ s/>/&gt;/g; $_ =~ s/"/&quot;/g; print; } こんなんでできました。 下3つの順番はどうでもいいですよね?
unlink(<*.txt>) こう書くとワイルドカードが使えるようになるの?
55 :
53 :03/06/08 14:44 ID:???
らくだに書いてあったか。
56 :
51 :03/06/08 14:45 ID:???
>>54 書いたらだめなんか?()
消しても結果は同じだった。消えない・・・。
>>56 unlink <*>
やってみて
てか、;忘れてるなんてないよね?
58 :
53 :03/06/08 14:50 ID:???
Windows2000ではできたぞ。
59 :
51 :03/06/08 14:51 ID:???
>>57 フォルダが読み取り専用になってた。
でも、みてみたら、どのフォルダも(PC内)読み取り専用だった・・・。
しかも、解除できない。関係ある?
読みとり専用でも消せるけど・・・
>>59 うまくいかないときは「どううまくいかないのか」を書いてくれ。
62 :
61 :03/06/08 15:05 ID:???
ああ、消えないのか…… スクリプトは削除対象のファイルと同じディレクトリで実行させてるよね?
63 :
51 :03/06/08 15:08 ID:???
>>62 ありがとう。
すごくあふぉなことやってた。↓の階層にファイルあるのに消そうとがんばってた。
消す前に、chdirで移動したら消せた。
お騒がせしてすみませんでした。
64 :
直リン :03/06/08 15:10 ID:+3TQ1ee9
¥
2chのトリップみたいのを付けたいです。 名前#123 ↑で123だけ抜き出す方法が知りたいです。
あのさ。 ここはなんで調べもしないで来る人が多いのか? 初心者だから分からない、ではなくて調べてないから分からない。 って質問ばっかりだぞ。
68 :
51 :03/06/08 17:55 ID:???
>>66 my($name,$trip) = split(/#/, $name);
>>68 ありがとうございます。
それをどうやって組み込めばいいのでしょうか?
……って返されそうだな。
71 :
51 :03/06/08 18:03 ID:???
>>70 そだね。 69は偽者じゃないの?
さすがにそこまでプなやつはおらんだろ。
いらっしゃーい、Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。
>>70 あなたは
名前#123 をなんという変数に代入してるですかー
$nameです
>>67 自分のサイト作って次はCGIだーって思ってる奴が迷い込んで来るんだよ。
質問者は
>>1 読まないしね。読んだとしても1行ぐらいじゃないかな。
>>68 split(/#/, $name, 2);にしないと$nameが"名前#12#3"とかなっていたら$tripが"12"になってしまうけどいいの?
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
これを強制させるのはどうだ?
例えば
>>66 にこれを書かせると
1:自分はこう言う事がしたい。
2chのトリップみたいのを付けたいです。
2:それでこんな風にやってみたが・・・
何もしてません。
3:それだとこんなエラーが出て上手く行かなかった。
何もしてないのでエラーはありません。
となって、自分で全く調べてないって少しは自覚できるんじゃないかな。
そもそもスレのレベルが下がり過ぎ。 ここは「Perl初心者」のためのスレだろう。 "努力・常識のかけらも無いアホ"の"質問にすらなっていない独り言"で埋まってしまうのはいかんだろ。
&jcode::tr(\$FORM{'FROM'}, '#', '#'); if($FORM{'FROM'} =~ /([^\#]*)\#(.+)/){ my $main_message = $1; my $handle_pass = $2; my $change_salt = substr($handle_pass, , 1) . "H"; $handle_pass = substr(crypt($handle_pass, $change_salt), -8); if($main_message ne ""){ $FORM{'FROM'} = "$main_message </b>◆$handle_pass <b>"; }else{ $FORM{'FROM'} = "</b> ◆$handle_pass <b>"; } }
$nameに#aiusiauがあるとする $sharp = index($name); $sharp++: $trip = substr($name,$sharp); ではダメ? 無駄が多い?
83 :
82 :03/06/08 18:22 ID:???
ミスった。 $sharp = index("$name","#"); $trip = substr($name,$sharp++) これでいいや;
なんで++するの?前置インクリメントならわかるけど。
85 :
82 :03/06/08 18:27 ID:???
>>84 ぇ?indexは1文字目を0から、substrは1文字目を1とするから足す必要あると思うんだけど、、、
てか、実際これでやってる
>>85 $i=0;
$j=$i++;
としたとき、$iは1になるけど$j=0になることは知っているよね?
もちろんそれでいいならいいんだけど。ただ、あとで$sharpを使わなければ意味ないなぁと思って。
>substrは1文字目を1とするから
#の次からを取り出すわけだから+1は必要だと思うけど、特に$[をいじっていなければsubstrは一文字目は0。
89 :
82 :03/06/08 18:43 ID:???
あぁ、そうだった。 次からとるから+1だったな
if(($sharp = index($name,'#')>=0){ $trip = substr($name,$sharp+1); #ここでトリップ生成 }
>>91 そりゃできるだろ。
if(($sharp = index($name,'#')>=0){
$trip = substr($name,$sharp++);
#ここでトリップ生成
}
では動かんよ。
>>92 括弧の対応があわないね(汗
if(($sharp = index($name,'#'))>=0){
$trip = substr($name,$sharp+1);
#ここでトリップ生成
}
94 :
82 :03/06/08 19:02 ID:???
へんなふうに書くなぁ・・・
>>93 、
>>94 あ、いや、そういうことじゃない。
$trip = substr($name,$sharp+1);
が
$trip = substr($name,$sharp++);
だと動かんでしょ?って
>>82 に言いたかった。
97 :
82 :03/06/08 20:39 ID:???
>>96 それはわかってる。
=でつなぐと、後に++したら、足す前の値を代入するからだろ?
99 :
82 :03/06/08 20:43 ID:???
>>98 ぃやぃや、こちらこそ「は?」
なにを指してるんだこいつは
101 :
ラヴ :03/06/08 21:07 ID:Sf/nGZf1
#/usr/local/perl #学籍番号 #氏名 print(" a =?"); chomp( $a = <STDIN>); print("演算子?"); chomp( $op = <STDIN> ); print(" b = ?"); chomp( $b=<STDIN> ); if($op eq '+') { $c=$a + $b; print (" $a + $b = $c\n"); } else { if($op eq '-'){ $c=$a - $b; print ("$a - $b = $c\n"); } else { if($op eq '*'){ $c = $a * $b; print ("$a * $b = $c\n"); } else { if($op eq '/'){ $c = $a / $b; print ("$a / $b = $c\n"); } } } } のフローチャートはどうやって書いたらいいのでしょう??
102 :
無料動画直リン :03/06/08 21:10 ID:+3TQ1ee9
>>101 本よめ。つか、いまどきなんでそんな原始時代のことをしてるのか。
104 :
82 :03/06/08 21:19 ID:???
>>100 書いたけど、、、
>は?・・・
ってのはどういうこと?
>>105 分岐文って何だ? 三項演算子なら知ってるが。
どうせ本7だろ。放置放置。
>>80 > &jcode::tr(\$FORM{'FROM'}, '#', '#');
Jcode.pm に入れ替えたらエラーになた。(s/jcode/Jcode/g したあと)
でも、Parse したときに、Shift_JISに変えているんだから、
s/#/#/g; にしちゃった。
日本語が文字化けをするのですが どうすればいいでしょうか? 英数なら大丈夫です。
( ´_ゝ`)ツーン
112 :
82 :03/06/08 22:20 ID:???
>>109 超超超特別サービスでおまいに説教を送ってやろう。
普通は叩かれるだけなのに説教を貰えるとは幸せと思え。
①まずどうやって生成した文字列なのか。
どのような過程を通り、どう言ったアプリケーションで文字列に直しているのか書くべきである。
②
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
さらにこのスレのルールとして以上の事を書かねばならない。
③
これ決定的。
スレ違いだから他に行って下さい。
記述やコーティングのスレだから。
>>113 >普通は叩かれるだけ
普通は無視で流れてくだけだよ
116 :
82 :03/06/08 22:30 ID:???
>>116 じゃあ、
>>112 >
>>111 > あってるよ
合ってないのになんでそういうこと言うの?
$name = "hoge#hage";
$sharp = index("$name","#");
$trip = substr($name,$sharp++) ;
print $trip,"\n";
と
$name = "hoge#hage";
$sharp = index("$name","#");
$trip = substr($name,++$sharp) ;
print $trip,"\n";
の結果比べてご覧。
#なんで切れ気味なの?
118 :
82 :03/06/08 22:34 ID:???
アヒャーン。 違うねぇ、スマン、見間違えてた
119 :
nobodyさん :03/06/09 02:42 ID:KAhSj8Gh
日時の取得なのですが、 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $month = ($mon + 1); if ($sec < 10) { $sec = "0$sec"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } if ($mday < 10) { $mday = "0$mday"; } if ($month < 10) { $month = "0$month"; } $date = "$month/$mday/$year $hour\:$min\:$sec"; これで実行すると、2003年が103年となってしまいます。 2003年に正しく修正するにはどうしたらいいでしょうか?
120 :
_ :03/06/09 02:54 ID:???
それやらなくてもなると思うよ。
初心者のオレにも答えられそうな質問だ。
>>119 2003って表示させたいなら
$year += 1900;
下二桁「03」って表示させたいなら
$year = sprintf("%02d",$year%100);
を追加すればいいんでね?
>>119 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
の$yearは1900年からの経過年数
124 :
nobodyさん :03/06/09 11:48 ID:s9oH3tCT
すみません。 jcode.plを使っていて WARNING: UtfToLocal: could not convert UTF-8 (0xd6a5). Ignored というようなエラーが出た方はいらっしゃいませんか? 特にUTFは使っていないのに、必ず出てきてエラーになってしまいます。 ファイルはshift_jisで、それを読み込んでeucに変換しているのですが・・ このエラーはネットで探しても見つからないので ご存知の方がいらっしゃいましたらよろしくお願いします。
utftolocalで検索するとjdbcがヒットするのだけど、そういうのを使ってない?
>>124 jcode.plにはUtoToLocalなどない。つまり、お前は決定的に何か間違っている。
127 :
124 :03/06/09 12:54 ID:s9oH3tCT
すみません。解析した結果、 DBとのコネクト時のことだったみたいです。 申し訳ありありませんでした。 jcode.plにも、そのメソッドを検索して、存在しないから 内部的なものかとおもっていました。 Posgresqlに文字コードをEUCを指定して接続する方法はあるのでしょうか? DBIを使っています。 interbaseのibperlを使っていた頃は、Charsetでできたのですが・・
128 :
無料動画直リン :03/06/09 13:10 ID:GjkKVS2A
130 :
nobodyさん :03/06/09 14:01 ID:QAgTJ6O8
正規表現の最長マッチと最短マッチで同じ結果が得られることが明らかな場合、 どちらを使用した方が、処理速度・負荷の面で有利なのでしょうか?
正規表現は「マッチしない」時にどっちが手っ取り早く記述を抜けれるか考えるのがミソ
$ImageDir = "../image/photo/"; $in{id} = 8; $in{file1name} = "hoge.jpg"; $in{file1name} = "fuga.jpg" rename($ImageDir.$in{file1name}, $ImageDir."photo1_id".$in{id}."jpg"); rename($ImageDir.$in{file2name}, $ImageDir."photo2_id".$in{id}."jpg"); とやっても、renameされません。 パス付きファイル名をrenameに渡してもダメなのでしょうか? だとしたら、同じことを実現するにはどうすればいいのでしょうか?
パス付きでもいけるはず。 ・ フィアル名が正確かどうかprintで出力して確認 ・ エラーがあれば、エラー内容を出力 エラー内容は$!に入ってるので、 rename $file1,$file2 or die "rename Error : $!"; で見てみればいい。
>>134 あ、renameでもor dieできるのですね。。。
そっか、openのときしか使ったことなかったです。さんくすです。
136 :
nobodyさん :03/06/10 02:08 ID:0JHS1DHo
1バイトとかバイト単位ではなく、1文字という文字単位で抜き取る関数はありますか? 半角カナとかの1バイト文字と、1バイト文字も含めた全ての文字列との比較させて、その結果によって処理を振り分けるスクリプトを作りたいんで。 ちょっと説明が難しいんですが、知ってる方いたら教えて下さい。 substrではダメなんです。
>>136 2バイトも一文字として認識してほしいって事?
そんな関数ないっぽいです。
モジュールなら、どこかにあるかも。
極論で言わせてもらえば、jperl使えって事になってくるかな。
それは極論なんだろうか
>>138 たぶん極論・・・
って言うか、俺的に極論かな・・・?
日本語文字列で問題がおきてる。
↓
jperl使え。 終了。
これが、黄金パータンでしょ?(w
>>136 sjisじゃできんが(2バイト文字と1バイト文字が重複する)、eucならできる。
perlメモの「日本語を扱う」に書いてある。がいしゅつ
1:CGI::Sessionモジュールを使ってセッション管理をしてみたい 2:CGI::Sessionモジュールを試用してテスト中、 クライアントからセッションIDを取得できなかった場合のテストをやってみたら... 3:サーバにセッション情報を保持したファイルが残って、更新されることも消えることもなかった。 該当のセッションを使用してのアクセスがないので更新されないのはあたりまえなのですが、 もう使われることのないセッション情報を消す管理用メソッドとかないのでしょうか。
142 :
nobodyさん :03/06/10 14:45 ID:H1NA4Acv
$ORG[0] = { "person" => "tanaka", "adana" => "tanachan", "adanaid" => 5, }; $ORG[1] = { "person" => "takada", "adana" => "takachan", "adanaid" => 2, }; $ORG[2] = { "person" => "imai", "adana" => "imachan", "adanaid" => 3, }; @tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG; foreach (@tmp) { print 'person='. $ORG[$_]->{person}. "\n"; print 'adana='. $ORG[$_]->{adana}. "\n"; print 'adanaid='. $ORG[$_]->{adanaid}. "\n"; } はわかるのですが(以前こちらで教えていただいたのですが) そうではなく、@ORGを、${ORG[?]->{adanaid}}でソートした結果を、 再び@ORGとして得るにはどうすればいいのでしょうか? (ただし、一個一個person、adana、adanaid などとせずに。。。実際は項目が多いもので) foreach my $key (keys %{$ORG[0]}){ \$ORG[0]->{$key} } ↑この辺をどうにかするよな気がするのですが・・・
>>142 よくわかんないけど、こんな感じ?
@tmp = sort { (${ORG[$a]->{adanaid}} <=> ${ORG[$b]->{adanaid}}) } 0 .. $#ORG;
foreach (@tmp) { push(@temp,$ORG[$_]); }
foreach (@temp){
while(($i,$j) = each(%$_)){
print qq|$i = $j\n|;
}
}
144 :
142 :03/06/10 15:42 ID:???
解凍してコピーだけで使えるXMLパーサモジュール教えてください。 XML::Parser::Liteで読めるようになったけど書き込めない・・・。
@ORG = sort { $a->{ adanaid } <=> $b->{ adanaid} } @ORG; foreach my $man(@ORG){ #print_man foreach my $atti(keys %{ $man }){ print $atti, ' => ' ,$man->{ $atti }, "\n"; } print "\n"; }
>>139 jperl 使うぐらいなら Perl 5.8.0 使え。
表示部分だけ foreach my $person (@ORG) { foreach my $attr (sort keys %$person) { print $attr, ' => ', $person->{$attr}, "\n"; } print "\n"; }
Perlでつくったプログラムをexeファイルにして誰でも使えるようにできますか?
(-_- ) …… (∞ ) …出来ないんじゃないか? | |
152 :
nobodyさん :03/06/11 01:07 ID:b6wCYV2G
糞な質問で申し訳ありません。 subInputPage { print "Content-type: text/html; charset='Shift_JIS'\n\n"; $fname = $FORM{'name'}; print <<END; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><body> <strong>$fname</strong>さん<br> </body></html> END } subResultPage { print "Content-type: text/html; charset='Shift_JIS'\n\n"; print <<END; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>名前入力</title></head> <body> <strong>$fname</strong>さん </body></html> END } ↑ResultPage内の $fname が空になってしまうのですが、 InputPage内の $fname に格納したもの(これは表示される)を ResultPageの中の $fname に受け継がれるようにするには どうしたらいいのですか?
153 :
無料動画直リン :03/06/11 01:10 ID:xrcrQEEf
>>154 if (...) {
&InputPage;
} else {
&ResultPage;
}
ってやってんだろ。
156 :
nobodyさん :03/06/11 01:34 ID:b6wCYV2G
早速答えていただいてありがとうございます。
>>154 subは関係ないです。
>>155 全くその通りです。
if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
ってやってます。
どうやったら表示されるようになりますか?
>>151 ActivePerlのperlccはエラーコード吐いて意味なし。
Cコンパイラを用意していないだけだったりして。
>>156 そのif分岐の前に $fname を設定しなきゃダメだよ(´・ω・`)マジデ マジデ
>>158 Cコンパイラを用意しないといけないんですか・・・。
どうやってやるんですか?
bcc
162 :
152 :03/06/11 02:10 ID:b6wCYV2G
>>159 たびたびすいません、ネタじゃなくてまじわからんです。
$fname = '名無し';
if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
これだと$fnameに「名無し」がはいちゃうし・・
>>152 myやlocalをつけなければグローバルになるはずだから、そのままでも受け継がれるはずだけど・・・
サブルーティンを呼び出す順番は正しい?
>>162 入っちゃいけないの?(´・ω・`)
そういう風に自分で設定してるんだよ(´・ω・`)マジデ マジデ
$fname = $FORM{'name'};
if($FORM{'mode'} eq 'enter') {
InputPage();
}
elsif($FORM{'mode'} eq 'result'){
ResultPage();
}
これじゃだめなの?(´・ω・`)
if-elsifじゃそのどちらかしか呼ばれないだろ。
両方ともこうやっちゃえ <strong>$FORM{'name'}</strong>さん<br>
ResultPage()の中で$fname=$FORM{'name'};とやればいいと思うんだけど。 InputPage()とResultPage()は一度に両方とも呼ばれることはないんでしょう?
168 :
152 :03/06/11 02:42 ID:b6wCYV2G
みなさんレスありがとうです。正直こんなに親切にレスしてもらえると思ってなかったので(笑 感激しております。 if($FORM{'mode'} eq 'enter') { InputPage(); } elsif($FORM{'mode'} eq 'result'){ ResultPage(); } else { EntryPage(); } exit; EntryPage()のフォームで読み込んだものをInputPage()で表示し、 その後、InputPage()でボタンを押すと、ResultPage()に移って表示 って感じなんです。 やっぱり表示されないです・・・ 何かうまい方法ないですかねぇ
InputPageは確認画面なのか? Inputと名付けているから違うとは思うけど。。。
170 :
152 :03/06/11 02:59 ID:b6wCYV2G
>>169 InputPageは入力のページですよ。
名前を表示してその下に入力フォーム
EntryPageも入力ページなんでしょう?なんで分けるの?
173 :
_ :03/06/11 03:03 ID:???
うまい方法っていうよりうまくいかなくなるように書いてるからだろ こんな初歩的なことで躓いてるようじゃ全部晒したほうが早いわ
>>152 のInputPageは略したものだよね?まさかそのままじゃないよね?
もしそのままだったらフォームが(ry
176 :
152 :03/06/11 03:10 ID:b6wCYV2G
>>171 試しましたよー
>>172 分ける必要は無いんだけど、その方がわかりやすいかなーと思って
やっぱり、ひとつのページにまとめる事にしました。
ご迷惑をおかけしました。
考えてくださった方々ありがとうございました。
177 :
152 :03/06/11 03:12 ID:b6wCYV2G
>>174 あ、ごめんなさい、確かにその通りなんですが・・・
>>175 そりゃ略したものですよ(w
>>158 Cコンパイラを用意するとはどういう意味ですか?
>>178 そのままの意味。
perlccはPerlのソースをCのソースに変換するものだから、実行可能なものにするためにはCコンパイラが必要。
一連の処理をまとめてやってくれるから(実はPerlスクリプトやバッチファイルだったりする)Perlのソースを直接実行可能な形式にしているようにみえるけど。
Windowsの場合はVC++6.0ならOKだった。他のコンパイラは試していない。
>>180 VCはあります。
そのあとどうすればいいかわかりません。
>>181 perlccのあるディレクトリを環境変数PATHに追加してperlccを実行するだけ。
>vcvars32 >perlcc hello.pl >a.exe Hello World.
184 :
nobodyさん :03/06/11 06:42 ID:u2aqyjyI
解決せぬまま、朝になってしまいました。 すみません、一つ質問させてください。 HTMLファイル内のアンカータグで指定されているURLを全てエンコードして返すコードを書きましたが、どうも思う ように動いてくれません。問題のコードは下記となっております。 ----------------------------------------------------- while(<FH>){ if($_ =~ /\<a.*?href.*?\=.*?\>/ig){ my $tmp = $_; while($tmp =~ /(.*\<a.*?href.*?\=)(.*?)(\>.*?)(\<|\n)/ig){ my $tmp1 = $1; my $tmp3 = $3; my $tmp2 = main::url_encode($2);#エンコードルーチン $tmp2 =~ s/\%20//g; $tmp2 =~ s/\%22/\"/g; $index_file .= $tmp1 . $tmp2 . $tmp3; } } else{ $index_file .= $_; } } ----------------------------------------------------- 1行に2つ以上のアンカータグがあった場合を考えてwhileを使用しておりますが、その部分の正規表現に問題が あるというところまでわかっていながら、全く前進せぬまま朝になってしまいました。情けないです。 ここの正規表現の区切りとなるものが曖昧なことから、うまく認識してくれず、整形後のHTMLファイルがおかしく なってしまっているのだと思われます。 もし宜しければ、教えてください。 すみませんが宜しくお願いいたします。
foreach (@tmp) { } と、 for ($i=0;i<=$#tmp;$i++){ } って、何が違うのでしょうか?
>186 前者は@tmpの中身を順番に参照する。 後者は0から$#tmpまで$iがカウントアップしていく。 前者は数字とは限らないが、後者は確実に数字。
unlink(<tmp*>); したら、 glob failed (child exited with status 127) at index.cgi line 863. といわれてしまったのですが、 どうすればいいのでしょう? glob関数は使ってないはずなのですが・・・
>>187 ありがとうございます。やっとわかりました(情けない
>>188 <tmp*> <- ファイル名glob演算子
なんでエラーになるかは知らない。
文字列のパターンマッチした部分を別の変数に代入する スマートな方法はありませんか? 今はこんなやり方をしてるんですけど… $_="0123aa456789"; m/([a-z]+)/; $str = $1;
>>191 $_="0123aa456789";
s/([a-z]+)/$str = $1/e;
193 :
nobodyさん :03/06/11 16:40 ID:Gw/QAyIn
$_="0123aa456789"; ($str) = /([a-z]+)/;
194 :
:03/06/11 17:17 ID:???
perlをレンタルサーバーと同じバージョンにしたいのですが、 winの5.004_01が入手できるところをご存じないでしょうか?
195 :
_ :03/06/11 17:19 ID:???
196 :
194 :03/06/11 18:07 ID:???
自分で解決しました、失礼しました。
>>194 スレ違い&winの5.004_01は存在しない&同じにしても意味なし
Perlのバージョンよりも、OSを同じにしたほうがいいかもね。 処理系依存の関数ってけっこうあるし。
199 :
nobodyさん :03/06/11 20:11 ID:fefOLsV8
1通のメールに、普通のメールの内容とHTMLメールの内容を一緒に入れて 送れる(どっちを表示するかはメーラーがきめる)と聞いたのですが sendmailにどういう風に渡したらいいんでしょうか? Content-Type: multipart/alternative;を使うらしいとこまでは わかったんですが… (プログラムを動かそうとしているサーバには、モジュールは入れられないみたいです) どなたか御存じの方がいらっしゃったら、よろしくおねがいします。
>>199 スレ違いですので、お引き取りください。
$b ="$aいうえお"; $a = "あ"; print $b; このとき、当然ですが「いうえお」しか表示されません。 「あいうえお」と表示したい場合はどうすればいいですか? $aを$bの前に持ってくるというのはナシで。置換しかないですかね?
202 :
YUIS :03/06/11 20:28 ID:oL0No0ho
>201 print eval($b); $aや$bにコマンドを入れられてたら、かなり危険な状態になるのであまりお勧めできない。
204 :
_ :03/06/11 20:44 ID:???
205 :
nobodyさん :03/06/11 21:02 ID:OIUswXrq
レスありがとうございます。 print eval($b); ↑何も表示されない。 print eval{$b}; ↑「いうえお」しか表示されない。 アルェー?
>205 すまん。 俺の記憶違いだった。
$b ='"${a}いうえお"'; $a = "あ"; print eval($b);
208 :
nobodyさん :03/06/11 21:33 ID:OIUswXrq
>>207 できた!
シングルクォートで囲まないといけないんですね。
サンクス。
>>206 さんもありがとうがざいました。
209 :
_ :03/06/11 21:35 ID:???
>>208 シングルクォートじゃなくても良いけど$bの内容が「""」とか「qq!!」と文字列リテラルとしてエバれるようになってりゃいい。
>>201 で
$b ='"(split(/<>/))[0]いうえお"';
print eval($b);
だと
いうえおと表示されます。
(split(/<>/))[0]にはある文字列がはいっています。
>211 evalがどういう働きをするものか勉強しなおしてください。 あなたの期待している通りにならない事がわかります。
213 :
188 :03/06/11 23:39 ID:???
>>190 ありがとうございます。なるほど。
ところで、こういう場合、考えられる原因ってなんでしょうか・・・?
いちお、「tmp*」のパーミッションは666にしてます。
>>213 こういう場合って?直してもだめだったの?
複数の画像を一度にアップするCGIを製作しています。 フォームから <input type="file"~(以下略 と言う風に入力してもらいcgiでcgi-libを使用してデコード、とまでは できたのですが、どのようにして拡張子を取得するべきか・・・ 複数のファイルをアップロードする場合、どのようにして拡張子を取得するのでしょうか? (今現在、プログラムが手元にないのであまり詳しく状況を書けなくて申し訳ありません。)
>>215 スレ違いですので、お引き取りください。
すみません、初心者なんですが教えてください。 Webでアンケートを作成し、その結果をCSVファイルにしました。 それをWindowsマシンにダウンロードして、Excelで開くと 日本語部分が文字化けをしてしまいます。 一応、SJISコードに変換してからCSVを作成しているのですが... やり方として、根本的なことを分かっていないがために 何か間違っているような気がします。 恐れ入りますが対処方法を教えてください。
219 :
sage :03/06/12 01:30 ID:SEaNTt27
221 :
nobodyさん :03/06/12 01:31 ID:WFfieXIn
Perlって読みにくくてやっぱ、Rubyのようがいいよ ねぇ、
sjis変換にperlを使ってなかったら、どこもperlの話題ではないな
>>219 こういう説明で十分なのか不安なのですが
&jcode'convert(*form,'sjis');
というようなコードを使っています。
コーティングの話ではないんですが、ちょっと玄人の方にアンケート取ります。 ちなみに俺は素人さんです。 ・腹の立つほど複雑な処理を数日考えて作りました。 ・記述の量はかなり多いです。 ・強引に作ったので処理はめちゃめちゃで見れた物じゃないです。 ・多分半年後の自分は、解読出来ません。 ・さらに、メンテしにくくバグが出たら大変そうな仕組みです。 ・ついでにデータファイル(txt)の書き換えもめんどくさそうです。 しかし! 上記のダメダメな処理が出来た直後に。。。 もっと効率が良くて、見やすくて、メンテしやすくて、スマートな処理を思いつきました。 ・でも、ハッキリ言って書き換えるのめんどいです。 ・データ(txt)も全部書き換えです。 ・データの書き換えも含むと1日では出来なさそうです。 ・しかも苦労して作ったダメの処理を破棄するのは抵抗があります。 普通はそんな時どうするんですか? ダメな処理を強引に使いますか? プログラムは苦労するものなのだと割り切って作り直しますか? 多分、処理は使い捨てではなく、ちょくちょく直しながらそれなりに使うと思います。 ・そこら辺の常識を玄人さんに聞きたいです。
おい、そこのロンドンブーツ!
まず、データの書き換えをするプログラムを作るな
>>219 ちなみに、Print文で空のファイルに書き込みをしています。
print FILE $data;
みたいにです。
>>224 たった数日で出来るものを「かなり多い」というな。
>>224 良いと思う処理方法が見つかったなら、ソースは書き換えるべき。
データファイルは、Perlで新しいフォーマットに書き換えるスクリプトを作ればいい。
俺は、そうしてる。
いや、そうするべき。
分かりました。 スパッと気分を変えて書き直したいと思います。 って言うか、もう始めてます。 綺麗な記述&処理のほうが後々イライラせずにすみそうだし。。。 データはperlに直接埋め込む方式に変更したので書き換えスクリプトは作れなさそうです。 まったく変な構造を持ったデータでして…。 では、ありがとうございました。
>>230 頑張れFIGHT (^○^)//Ω\\(^○^)ドンドコドンドコ
スクリプトでそのスクリプトを書き換える進化型のプログラムでも 作ったのかい? ま、書きかえってのはそのうちやらないといけない時がくるわな。
readdirで読み取ったファイルやディレクトリはどういう順番の配列になるんですか?
いえ、RPGです。 実は俺、以前にもここに来た事があったりして… モンスターデータが当初の予定より複雑になった(量も多くなった)ので他の記述との折り合いが悪く、 強引に組み込んだらぐっちゃぐちゃになってしまった次第です。 素人な俺は、なぜか強引に作ってしまいスグぐっちゃに。。。恥
>>233 たぶん処理系に激しく依存すると思うが、おそらくディレクトリエントリに格納されている
そのままの順番(ファイルを作った順番)ではないかと。
236 :
188 :03/06/12 11:13 ID:???
私は
>>188 ( =
>>213 )ですが、
>>214 「直しても」ってどういうことですか?、
unlink(<tmp*>);って直しようないかと思うのですが・・・
>>236 ( )はいらないだろ。
>>190 が答えてくれてるじゃないか。
unlink <tmp*>;
>>236 Perlのバージョンとプラットフォームは必ず書くこと。
そのエラーはglob()したときにシェルを子プロセスを起動したが、その子プロセスが正常終了しなかった、といっている。
何故かはそのエラーからは分からない。
File::Globも試すこと。
>>237 unlink(<...>)でも全く問題ないよ。間違った解答をするのはやめてほしい。
どのPerlのバージョンとプラットフォームでやって問題なかったか必ず書くこと。 それ以外でやってみてから言え。
Perlは実行される命令毎に翻訳されるんでしょうか? (実行されていない部分は翻訳されていない?) それとも一旦スクリプト全体が翻訳されて実行されるんでしょうか? require するライブラリなどはどの時点で翻訳されるんでしょうか? (翻訳ってのは機械語に解釈って意味で使ってます) 処理の分岐がたくさんある場合にそれぞれサブルーチン化するんですが これは外部にライブラリとして出した方がいいんでしょうか?
242 :
nobodyさん :03/06/12 15:57 ID:F+7kv9WZ
perlでSystem関数とOpen関数を実行させたくないのですが、どうすればいいでしょうか。 verは5.xだったと思います。よろしくお願いします。
243 :
236 :03/06/12 16:58 ID:???
>>238 ちょっと今そとなので、Perlのバージョンは5.*ということしかわからないのですが、
(プラットホームはコバルト)、
そういえば、lsコマンドをperlから実行できない設定になってました。
きっと、それと同じ理屈ですよね?
セキュリティポリシー的に、シェルコマンドをperlから実行できないようになってるという。
簡単なダウンロードCGIを作成しています。 巨大テキストから一部分を一つのCSVとして出力しています ieで実行するとダウンロードダイアログが開くのですが その時ファイル名が「~.cgi」になってしまいます この「~.cgi」を任意に変えられないでしょうか? 具体的には 1.getcsv.cgi にアクセス 2.ダウンロードダイアログが開く 3.ダウンロードファイル名が「data.csv」になっている のような事がしたいのです
>>244 スレ違いですので、お引き取りください。
掲示板に書き込まれたメッセージ内のURLに自動的にリンクを張るのはどういう構文を追加したらいいんでしょうか?
>>241 Perlは最初に全部を構文解析して、実行する。
useとrequireの違いでも調べてみればいいかな。
249 :
nobodyさん :03/06/12 19:08 ID:OAyD+tHP
レスキューさんの掲示板スクリプトを今までLinuxで
動作させていましたが、このたびWindowsXP+ActivePerl5.6.1-635
で動作させようとしましたが、いまいち変な動作で頭を抱えています。
スクリプトはTrees↓です。
http://www.rescue.ne.jp/cgi/trees/ 変というのは、一見動作はするのですが、「新しい話題」で新規書き込み
をしようとすると、
「.は削除されていますので、コメントの投稿はできません. 」
というメッセージでエラーになります。
調べてみると、1340行付近の
if ($in{'resp_number'} ne '' && -s $in{'resp_number'}==0) { &error("File Not Found","$in{'resp_number'}は削除されていますので、コメントの投稿はできません."); }
の&&の後の条件でひっかかってしまうようです。
ちなみに、新規書き込みの時には$in{'resp_number'}の中には「.」のみが入っています。
ふつーのif文なのに、linuxで動作してActivePerlでNGなのです。
>>242 perl -M-ops=system,open -e 'open(IN, "<hoge"); system("ls")'
man Safe
man Opcode
man ops
>>249 ディレクトリを-sでチェックしてるから。 しかし、レスキューってへぼだなぁ。
253 :
188 :03/06/12 19:46 ID:???
>>188 ですが、
Pelrのバージョンは、5.00503で、
Apache/1.3.26 (Unix) でした。
>>243 で自分が言ったことで、間違いないでしょうか?
>>241 >>248 を補足。
Perlは疑似インタプリタ言語。
実行の度にコンパイルして実行すると言う手順を踏む。
従って、先にコンパイルしておく全ての言語と比較して低速になる。
>>253 「間違いない」と誰かに言ってもらわないと納得できないと。
>>242 意味がわからない。
openもsystemも使いたくなければ使わなければいい。
もし、
>>242 が鯖管だったとしたら、
その程度の能力しかなくて鯖なんか扱うなとマジで忠告する。
>>253 鯖の設定が怪しいのだと思ったら、その鯖の管理人に聞け。
ここで聞くことじゃあないだろ。
>>247 読みました。
$message =~ s/\n/<br>/g;
みたいな簡単な構文じゃ無理なんですね。
私にはまだ理解できそうにないです。
>>258 少々逆説的だが、
あれを読んで理解できないと匙を投げるくらいの動機しかないなら、
むしろはじめからやらない方がいい。
よって、やらないでいるのは結果的に正解。
>>259 さじを投げたのではなくて、もっと勉強しなければいけないな、と思ったという意味だったんですけどね。
なんかマイナスに解釈されたようですが、お気を悪くさせたようですみません。
>>260 わからないながらも使ってみてうまくいった、
とか言うのであれば、前言を撤回する。
>>261 どこにいれたらいいのかわからない、というレベルですからねえ。
263 :
nobodyさん :03/06/12 21:37 ID:xj4xPJ4f
>@newls2 = sort { $b <=> $a; } @newls2; >return($newls2[0]); # 最高番号検出 さすがレスキュー・・・・
えーでも、 何個か数字があってその中から最高値を取り出せって言われたら オレもソートさせちゃうけど・・・楽だし。 自分で、一個ずつ比較させる処理書いてもいいけど・・・
うん。sortはCで書かれてるから、(データ量に依存はするが)perlでちまちま比較するよか早いかも新米。
267 :
nobodyさん :03/06/12 23:47 ID:xj4xPJ4f
>>249 ActivePerl5.8.0最新版でもNGでした。
誰か、暇な方、試して頂けないですかね…
cgiを改造してくれるスレってなかったっけ?
すいません。 FlashCGIつかっているのですが、こっちと、トリプが合いません。 新サバではないとおもいます。。。 はじめの2文字って「H.」から何かに変わったんでしょうか?
>>267 もう回答は出てるので、お引き取りください。
>>266 そうか?1回のループでいけるだろ。ソートするよりマシ。
>>272 そんな、ちょっとまえにローカルでしたときは変わってなかったのに、いまやると変です。。。なぜでしょうか
数値の大小を比較する演算子をきみたち初心者諸君に授けるぞよ。 A > B ←これはAが大きいと真をかえすのだ
275 :
nobodyさん :03/06/13 00:35 ID:nrl/A00g
その1回のループをまわすためにインタープリターがどれだけ働くかと... 実際のところは計測しなきゃわからないが。
Perlは逐次解析するわけじゃないし・・・
インタープリターとか言ってるあたりが初心者スレだな
>>276 何行ってんだ?ソートすると何度もコピーが行われるだろ。
最大値抽出ごときでソートするなんてとんでもない。
foreach(@num){ $max = $_ if($_ > $max); } これが一番早くてメモリも使わず?
$max の初期値は?
負も考えて@numの第一要素でもぶちこめば?
>>278 はて? perlgutsにもperlembedにもinterpreterと書いてあるが何か?
>>279 こういう恣意的なデータも取れるんだよ。
use Benchmark;
@ar = (1 .. 5);
timethese(10000, {
sort => '@br = sort { $b <=> $a; } @ar',
loop => '$max = $ar[0]; for (@ar[1..$#ar]) { $max = $_ if ($_ > $max);}'
});
Benchmark: timing 10000 iterations of loop, sort...
loop: 2 wallclock secs ( 2.23 usr + 0.01 sys = 2.24 CPU)
sort: 3 wallclock secs ( 1.98 usr + 0.00 sys = 1.98 CPU)
必 死 だ な
285 :
:03/06/13 08:01 ID:???
print "location: ***" で飛ぶとリファラは残りますか?
1回余分にチェックするほうが、スライスするより安くすむと思うが。。。
>>241 さんの質問に関連してお聞きしたいのですが。
外部ファイルにして、requireするにせよ、useするにせよ、
perlは、皆コンパイルするということなんですが、
以下のようにするより、
use Hoge;
if (...) {
kore; # koreはmainの関数
} else {
are; # areはHoge.pmの関数
}
以下のようにした方が負担が減るということでしょうか。
if (...) {
kore;
} else {
use Hoge;
are;
}
288 :
287 :03/06/13 10:01 ID:???
ごめんさい。1回限りしか、この部分が実行されないことが 前提です。そして、ifになる確率が50%はあるとして。
>>287 useの場合は一緒じゃない?
requireなら、そうやったほうがいい。(require文が実行された時点で読み込むから)
290 :
287 :03/06/13 10:31 ID:???
そうだったっす。requireですた。 うん、こういうの書いた覚えあるんで、正しい判断だったんだと わかってほっとしますた。
>>284 必死だな。これくらいのインチキも見破れないのか。(w
-----BEGIN PGP MESSAGE-----
Version: PGP 6.5.8ckt - ja
http://www.hizlab.net/pgp/ qANQR1DDDQQDAwKzdZAaYlhVL2DJvuMRq1Krlrlnei+qaIGlODje1KRbdRDVTD1/
h7dQ6RfnS3GkGv2RNdvpZgVvgQqkSXcM3N8o9AkvtrmRtO3BsJJ1id5RArQwjmEE
kVXhF6Y5HdeQfOOTRjTMV2kS0i27sza8Gv+g+uFFTozzmsJ2ffbmrUi/K4MjsNnN
yh/mrKF/MkenFZqjnQobAHmjqzYxj8VMyx31Ar1GM4g/2UiEtAErfz//cJCJ0zsB
akVGj67i/wWnQoZgYVxe1sSyT/0=
=+BHl
-----END PGP MESSAGE-----
Perlでwordファイルを検索することってできますか。 Namazuの仕組みを調べればいいんでしょうが、もっと簡単に モジュール組み込んで、テキストファイル検索するみたいに、 バリバリ、正規表現検索がしたいのれす。 なにか情報の載っているサイトでもいいですから教えてくらはい。
293 :
nobodyさん :03/06/13 12:41 ID:1CoOWAYz
質問です。 CGI.pmはmultipart/form-dataで送られたきたデータを受け取ると、 即座に一時フィルを作成するようなんですが、 このファイルを削除するか、ファイルを作成しないようにする方法はないですか?
>>292 Wordファイルの仕組みを調べれば、簡単じゃないことが分かるよ。
とりあえずバイナリエディタで開いてみ。
Namazuを使いたいってことなら、wordファイルからテキスト部分を抜き出して
インデックス作ればいいからそっちのやり方だと簡単かも。
>>293 全然CGI.pmの中身も見ずに反応するけど、
最後にファイル削除されないの?
ファイルを作成しないってことはメモリに全部蓄えるつもり?
予測可能なファイル名になっちゃうのなら問題だろうけど、
予測不可能なファイル名になってない?
初心者諸君よ! ベンチマークの採り方もお勉強しよう。 use Benchmark; $count= 100; @array= (0 .. 5000); timethese($count, { 'code1'=> q{ $max= $array[0]; for (1 .. $#array){ $max < $array[$_] and $max= $array[$_]; } }, 'code2'=> q{ @array2= sort {$b <=> $a} @array; $max= $array2[0]; }, 'code3'=> q{ $max= (sort {$b <=> $a} @array)[0]; }, 'code4'=> q{ ($max)= sort {$b <=> $a} @array; }});
296 :
nobodyさん :03/06/13 13:43 ID:U7lWej0V
>>292 ActivePerlならWin32::OLEで、WordファイルをCOMオブジェクトとして開けば、
Wordオブジェクトのメソッドを呼び出せる。
ActivePerlじゃないならOLE::Storageで頑張る。
298 :
292 :03/06/13 16:14 ID:???
>>294 wordファイルをバイナリエディタで開いて解析しようとしたが、
ちょっと漏れには無理だと悟って聞いたのです。大分前の話。
word2txtでwebを漁ってもぱっとしなかったし・・・
Namazuは、wordファイルも検索するって知ってる?つまり、
テキスト部分を抜き出すエンジンを備えているんじゃないかなぁ。
調べてみます。
>>297 うーん、ちょっとOLE::Storage見てみたけど、難しそうです。
Win32::OLEとかこれ使って、川合さんや極悪さんがExcelファイルを
簡単に扱えるモジュール書いてくれているんですが、やはり、word
は難しいんでしょうね。
>>294 >
>>293 > 全然CGI.pmの中身も見ずに反応するけど、
> 最後にファイル削除されないの?
> ファイルを作成しないってことはメモリに全部蓄えるつもり?
> 予測可能なファイル名になっちゃうのなら問題だろうけど、
> 予測不可能なファイル名になってない?
それが、削除されないんですよ。
new CGIした時点で一時ファイルが作られて、
exit(0) or dieしても消えないんですよ。
どんどんファイルが増えていくのはちと問題ありかと。
>>299 サーバがUNIXなら対応法はman CGIすりゃ書いてある。
>>299 その現象Windowsではなるよね
アップした際のファイルのファイルハンドルが開きっぱなしなのが原因
$q = new CGI;
$upfile = $q->param('upfile');
$tmpfile = $q->tmpFileName($upfile);#一時ファイル名取得CGItemp12345みたいな
~処理~
eval{close($upfile);}; #一応ファイルハンドル閉じる
unlink($tmpfile); #一時ファイル削除
んまぁ 最後のunlinkはなくてもいいかもしれないけど 保険として残ってたら削除ってことで。 ちなみにclose()をevalで囲っておかないと添付ファイルがない場合 特定のPerlのVerではエラーするよ
>>300 Linuxだが、
man: ??????????????????????
Failed to open the message catalog man on the path NLSPATH=<none>
No manual entry for CGI
>>300 >>301 >
>>299 > その現象Windowsではなるよね
> アップした際のファイルのファイルハンドルが開きっぱなしなのが原因
> $q = new CGI;
> $upfile = $q->param('upfile');
> $tmpfile = $q->tmpFileName($upfile);#一時ファイル名取得CGItemp12345みたいな
> ~処理~
> eval{close($upfile);}; #一応ファイルハンドル閉じる
> unlink($tmpfile); #一時ファイル削除
Thanks、解決しますた。
無料鯖なんで詳しく知らないけど、
環境変数見る限りではApache/1.3.27 (Unix) らしい。
でもunlink($tmpfile);しないと消えないんだよな・・・
string literals, numeric literalsとありますが、literalの意味が わからないのですが。わかる方います?
文字って意味よ。だからliteralsなわけよ。
#PK,a
>>295 #そのまま・・・
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 4 wallclock secs ( 3.98 usr + 0.00 sys = 3.98 CPU) @ 125.63/s (n=500)
code2: 5 wallclock secs ( 5.05 usr + 0.00 sys = 5.05 CPU) @ 98.97/s (n=500)
code3: 2 wallclock secs ( 1.37 usr + 0.00 sys = 1.37 CPU) @ 364.70/s (n=500)
code4: 1 wallclock secs ( 1.36 usr + 0.00 sys = 1.36 CPU) @ 367.65/s (n=500)
#@arrayをランダムに
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 2 wallclock secs ( 2.60 usr + 0.00 sys = 2.60 CPU) @ 192.23/s (n=500)
code2: 8 wallclock secs ( 7.98 usr + 0.00 sys = 7.98 CPU) @ 62.64/s (n=500)
code3: 4 wallclock secs ( 3.95 usr + 0.00 sys = 3.95 CPU) @ 126.71/s (n=500)
code4: 4 wallclock secs ( 3.93 usr + 0.00 sys = 3.93 CPU) @ 127.13/s (n=500)
#code1 を $max= $array[0]; for (@array){ $max < $_ and $max= $_ } に修正
Benchmark: timing 500 iterations of code1, code2, code3, code4...
code1: 1 wallclock secs ( 1.73 usr + 0.00 sys = 1.73 CPU) @ 289.02/s (n=500)
code2: 8 wallclock secs ( 8.03 usr + 0.00 sys = 8.03 CPU) @ 62.29/s (n=500)
code3: 4 wallclock secs ( 3.92 usr + 0.00 sys = 3.92 CPU) @ 127.62/s (n=500)
code4: 4 wallclock secs ( 3.90 usr + 0.00 sys = 3.90 CPU) @ 128.11/s (n=500)
>>244 いまさら言うのもアレだが、2chみたいにPATH_INFOを使って
hoge.cgi/fuga.jpgのようにすれば、IEなどを騙せ・・・たと思うけども。
311 :
188 :03/06/13 21:06 ID:???
glob使えないそうな・・・ で、glob使わないで、 unlink(<tmp*>);と同じことする方法ってないですか?
>>311 readdir と grep 辺りで。
>>309 普通に考えて、配列にはforeachが最速なんじゃないの?
$max = $array[0];
foreach my $array (@array) {
$max < $array and $max = $array;
}
あぁ、ごめん、最後に書いてあった。。…
>>311 $path = ".";
opendir(DIR, $path) or die;
unlink grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
closedir(DIR);
316 :
311 :03/06/13 21:57 ID:???
317 :
315 :03/06/13 22:02 ID:???
あ、これだとカレント以外のディレクトリを指定したときカレントのを消そうとして失敗するな。 書いてから気が付いた。ごめん、適当に修正してくれ。
318 :
315 :03/06/13 22:10 ID:???
やっぱ直した。3行目だけ。 unlink map { "$path/$_" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
2ちゃんねるのトリップ作成法を教えてください
トリップのアルゴリズムは公開されてたっけ 2ch互換のBBSを作るくらいしかメリットは無いかな
>>319 いろんな2ch互換掲示板でも落としてきて解読しろ
>>325 ただcryptやっているだけでした。
ですので、2chのアルゴリズムと一致しません。
( ゚д゚)ポカーン
あーすまんハゲども。 トリッパーで十分だ、 ノシ
globって今は標準組み込み関数じゃないの?
↓次の話題どうぞ
↓ ↑ →→→
標準だけど、内部動作は処理系依存だから、環境によって結果が異なる。
333 :
329 :03/06/13 23:27 ID:???
例えば動かない環境教えてくれ
>>333 内部的にはシェルを呼び出してるんだから鯖がそれを規制してたらダメだな
335 :
311 :03/06/14 00:24 ID:???
>>315 丁寧にありがとうございます。
で、
$path = "../image/photo";
opendir(DIR, $path) or die;
unlink map { "$path/$_" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
closedir(DIR);
とやったのですが、結果を見ると、消えてないんですよね・・・
なんでなんでしょう?スクリプトも間違いがあるとは思えないし、
別にcgi自体は正常に終了してるしからエラーログも見れないし、
$path のディレクトリも存在してるし・・・
いったい何が原因なんでしょうか?
恐縮ですがもう少しおつきあいねがえれば幸いです。
337 :
nobodyさん :03/06/14 00:28 ID:EElS1+7W
perlでcgi作りたいです。 でもCGIの設置くらいしかしたことありません。 1から勉強しようと思います で、参考書籍のスレに行ったんですがなんか微妙なので こっちで手っ取り早く教えてください ソースはメモ帳で書けるんですよね? お勧めの本おしえてください。 プログラムはやったことないに等しいです (HTMLはある程度書けます。それとHSPくらいなら・・・) 宜しくお願いします
>>335 ・print map { "[$path/$_]" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
等としてみて本当に拾えているか確かめる。
・unlink 後に print $!; してみる。
>>335 unlinkの後に$!を見てみる。
空ならunlinkは成功しているよ。
…というか、CGIスクリプトなのか。共用サーバでは実験しないでね。
CGIスクリプトは、途中でdieしても、HTTPヘッダさえ出力してあれば問題ないように見えることもあるから、注意してね。
もうしわけないです。
>>335 ですが、ファイルアップする場所がまちがってました。
正常に動きました。
申し訳ございません。
>>336 いいんだよ。それ正規表現だから。
>>337 ソースはメモ帳でOK。ただ扱えるサイズに制限があったような?
フリーのテキストエディタを使うといいよ。プログラミングに便利な機能がたくさんある。
342 :
337 :03/06/14 01:25 ID:EElS1+7W
>>341 HTML書くとき使ってるエディタ使うことにします
本はどうしようかな…
やはり見てから決めたほうがいいかな。
344 :
nobodyさん :03/06/14 05:08 ID:CEUIIJh6
Perlで、アクセス者のプリンタを制御することなんてできないですよね。 VBAならできるかもしれないけど。
>>344 Perlを何か勘違いしてる。
サーバサイドプログラムを勘違いしてる。
そういうのは、クライアントサイドプログラム。
346 :
nobodyさん :03/06/14 07:32 ID:FbHmkvIr
>>345 そんな事ないよPerlは何でもできるはず
句読点を抜いた文章は、バカっぽく見えるうえに説得力がまるでない。
サブルーチンで sub sub{ } と sub sub($){ } にはどういう違いがあるんですか?
>>349 sub 'hoge';
みたいに括弧なしで呼べたり、
sub @hoge;
とかした時の動作が変わったり。
Perlでping撃ちたいんですけど、 プロンプトみたいに、撃つ回数 平均時間、最短時間、最長時間 を得ることができますか? リファレンスみると、生きてるか死んでるか、しかわからないみたいなので・・・
353 :
:03/06/14 22:44 ID:???
質問します。 アクセスログのファイルのファイルハンドルをFとすると @line=<F>; のようにするのは、よくないとどこかで見たのですが ファイルサイズが小さい場合でも駄目なのでしょうか? もしよかったとして、どれくらいのサイズまでなら大丈夫なのでしょうか? もし過去ログにあるのならば、どのあたりの過去ログにあるかを教えて欲しいです。 よろしくお願いします。
>>353 小さきゃかまわないよ。
どのくらいのサイズまで大丈夫かなんて、環境によって違うので分からない。
「みんなはどれぐらいで線引きしてるか」の答えなら得られるかもしれない。
>>353 別に良くも悪くも無い
自分の用途によって使い分ける
358 :
:03/06/14 23:19 ID:???
>>355 >>356 レスありがとうございます。
なるほど、確かに環境によってかわりますよね。
では、どのくらいの大きさで区別をなさってるのでしょうか?
私は30~50k程度のファイルでする予定です。
そんぐらいだと、一行づつ読んだ方がいいと思う。
>358 なんで差が出るかの理由を考えろ。 その方が早い。
ちなみに、私はカウンターとかダウンロード用のスクリプトみたいな、 かなり小データ以外は一行筒読んでます。
362 :
nobodyさん :03/06/14 23:36 ID:MAEKWf+y
SSIでCGIを呼び出そうとして失敗したときに [an error occurred while processing this directive] というエラー文が.sthmlファイルの中に出てくるんですが、 この文章を自由な文面に変更したり出来るんでしょうか?
シーケンシャルな処理でいいなら一行ずつ ソートするとか、順序を入れ替えるとかしたいなら、一括で
364 :
:03/06/14 23:55 ID:???
>>359 >>360 >>361 >>363 またまたレスありがとうございます。
>>359 なるほど、1行ずつのほうがいいですか。
変更はすぐできるのですが、15~20kくらいのファイルでもだめでしょうか?
>>360 1行に記録するデータの項目がある場合と無い場合があるからです。
例えていったら、掲示板で名前だけ書く人と、名前もメアドも両方書く人がいる、みたいな。
>>364 大きさだけじゃない。
例えば、速攻で作らなきゃならない、使い捨てのスクリプトを占有サーバで実行するなら
数十MBでもやるかもしれない。
366 :
:03/06/15 00:13 ID:???
>>365 レスどうもです。
有料ですがレンタル鯖なので他の人に迷惑がかからないように
1行ずつ処理した方がよさそうですね。
ありがとうございました。
ディレクトリの作成日時ってどうやって取得するんですか?
セッション管理を一時ファイルを作る形で実現させたいと思っているのですが、 プロセス番号($$)のファイル名を作成させて管理する形式でユニークに しようかと思っております。 プロセス番号で管理すれば、完全にユニークになると考えて宜しいのでしょ うか。 まだまだ初心者のため、自信がありません。 どうか教えていただければありがたいです。
あ、、、 FFFTPで表示されてる、サーバーにあるディレクトリの作成日時と (stat("dir"))[9] 使って取得した日時(unixtime)が一致してない・・・・・ なぜだろう
372 :
nobodyさん :03/06/15 06:24 ID:m8nOAT8L
サブルーチン名を変数にして実行する方法はありません でしょうか。どうもうまくいきません。
>>372 こういうやつ?
$foo = \&bar;
$foo->();
sub bar {
print "manko";
}
$hoge = "test"; &$hoge; sub test{ }
375 :
nobodyさん :03/06/15 17:55 ID:fAURPzIq
>>375 マルチ先でも言われてるが、パーミッションに問題がある。
>>378 ディレクトリ作成なら (stat("dir"))[10] ではどうだ?
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
>>380 パーミッションって「許可」っていう名詞だよ。
「『実行パーミッションがない』と言え」って意味かな。
ミッションがないパー
釣られすぎ(w
いらっしゃーい、Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 煽りや荒らしは放置で 次の方どうぞ。
いらっしゃーい、Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 煽りや荒らしは放置で 次の方どうぞ。
いらっしゃーい、Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 煽りや荒らしは放置で 次の方どうぞ。
いらっしゃーい、Perlのコーディングで困ってる人のスレです。 【投稿する際の注意】 質問するときは内容をよく吟味してから投稿してください。 1:自分はこう言う事がしたい。 2:それでこんな風にやってみたが・・・ 3:それだとこんなエラーが出て上手く行かなかった。 最低でも1と3が無いと誰も答えられないよ。 良い回答は良い質問から。一緒に勉強しましょう。 煽りや荒らしは放置で 次の方どうぞ。
389 :
nobodyさん :03/06/15 21:03 ID:m8nOAT8L
>>373-374 ご返答有難うございます。
やりたいことは
>>374 さんのようなことなのですが、
このように実行すると、
Bad name after main:: at -.cgi
と出てしまいます。
use strictをはずせば回避はできるのですが、
いろいろと試してみたいと思います。
ご親切に有難うございました。
390 :
nobodyさん :03/06/15 21:04 ID:QzYzFnUN
>>389 %funcs = (
hoge => sub {return 1},
hage => sub {return 0}
);
$name = 'hage';
print $funcs{$name}->(), "\n";
>>379 それでもだめでした。
違う日付になってしまいます。
389とちょっとかぶっちゃうかもしれませんが、%{変数}でエラーが 出てしまいます。strictはずせばいけるのですが、、、 先生方、もしお分かりでしたら教えてください、、、
>>393 それはソフトリファレンスだからではないか?
変数の部分は文字列が入っている?
回避方法としては、
1.プログラムの構成を考え直す(ソフト・リファレンスを使わない)
2.no strict;を直前に入れる。
3.eval を使う。
などが考えられる。
>>392 ,
>>393 >>1 >【投稿する際の注意】
>質問するときは内容をよく吟味してから投稿してください。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>最低でも1と3が無いと誰も答えられないよ。
>>394 そのとおりでございます。
変数の部分には文字列がはいっております。
リファレンスから勉強しなきゃ駄目ですね。
本当にご親切に有難うございました。
397 :
nobodyさん :03/06/16 00:08 ID:CSJJat6/
指定したURLのソースを取得したいのですが、Perlで可能でしょうか? もし可能でしたらやり方を教えてほしいです。
mkdir関数でディレクトリをパーミッション777で作成したのですが 755で作成されてしまいました。 ラクダ本を読んでみたところ >数値MODEで指定したパーミッション(を現在のumask値で修飾したもの)を持つ とあるのですが、umaskで修飾とはどういうことなのでしょうか? 原因の分かるかたがいらっしゃいmしたらよろしくお願い致します。 以下の様にやっています mkdir( './dir', 0777 ) or die( "ディレクトリを作成できません\n" );
>>397 普通にGETしても割と簡単だし、面白いからやってみるべし
403 :
nobodyさん :03/06/16 01:49 ID:DMh466I+
掲示板を作っているのですが、 $content =~ s/([a-zA-Z0-9\.\-\_]+@[a-zA-Z0-9\.\-\_]+)/<a href=\"mailto:$1\">$1<\/a>/g; ↑この正規表現で、$content内に”(sage@hoge.com)”(←カッコは全角) という文字が含まれていた場合、最初のカッコ部分で文字化けしてしまいます ・・・というか、IEでは<a>タグの"<"部分が文字化けしてそれ以降の </a>部分までのHTMLが表示されてしまい、NN6ではsage@hoge.comの前に 余計な文字がくっついたものにリンクが貼られている状態になってしまいます 文字化けせずに、”sage@hoge.com”だけがマッチするようにするには どうしたら良いでしょうか?
405 :
nobodyさん :03/06/16 02:35 ID:cMLQJvQF
自分なりに検索をしたのですが、解決策は見つかりませんでした。 探し方が悪いのかもしれませんが… ファイルオープン時に、対象ファイルがないと『Internal Server Error』が表示されるのですが、 このエラーの変わりにメッセージを表示、もしくはHTMLで作成したエラーページにジャンプ させたいと思っています。 そこで、まずはメッセージの表示から挑戦したのですが、上手く行きません。 $fname1 = "ファイルのパス/ファイル名"; open(FILE, "$fname1") or die "File Open Error.\n"; open(FILE, "$fname1") || die "File Open Error.\n"; open(FILE, "$fname1") or &Error "File Open Error.\n"; open(FILE, "$fname1") || &Error "File Open Error.\n"; 以上のどの方法でも『Internal Server Error』が表示されています。 ファイルのパス/ファイル名は、HTMLフォームに入力された内容を取得しているのですが、 存在するファイル名を指定すれば、正常にファイルの入力は行われます。 以上、説明の不備等あるかもしれないのですが、よろしくお願いします。
>>405 CGIでdieするのはあんま意味ないです。
sub Errorのほうではちゃんとヘッダとか出力してますか?
407 :
nobodyさん :03/06/16 03:22 ID:X/Zl1g96
Apacheで print 'a' 等の後、エラーが出た場合バッファをクリアしてエラーを出力したいのですが、 バッファをクリアするにはどうすればいいのでしょうか?
>>406 レス有難うございます。
> sub Errorのほうではちゃんとヘッダとか出力してますか?
&Errorって、dieの代わりに使う…ってモノじゃ無いんですね…
どうも的違いの事をやってしまっているようですね。
もう少し勉強してから質問するようにします。
なんにせよ、解決に向かって一歩進んだような気がします。(気のせい?)
本当に有難うございました!
409 :
405 :03/06/16 03:40 ID:???
解決しました!
下記のようにすることで、無事にエラーページに飛ぶ事が出来ました。
open(FILE, "$fname1") or &Error;
sub Error{
print "Location:エラーページのURL\n\n";
}
>>406 さんにヒントをもらえたおかげです。有難うございました!
また、板汚し失礼いたしました。
>>403 これでどうだ?
文字化けしそうな時は、スペース1個入れてごまかしてみた。
$content =~ s|(?<=[\x81-\x9f\xe0-\xef][\x40-\x7f])([\w\.\-]+@[\w\.\-]+)| $1|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
>>410 ごめん。間違い。
↓こうしないと失敗するかも。
$content =~ s|((?:[\x81-\x9f\xe0-\xef][\x40-\xfc])*(?:[\x81-\x9f\xe0-\xef][\x40-\x7f]))([\w\.\-]+@[\w\.\-]+)|$1 $2|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
412 :
_ :03/06/16 04:23 ID:???
perlができることを自慢するために何か証明になる資格試験とかありませんか。 Cとかjavaとか、Linux、word、一太郎などまであるわけですが、perlはなぜか 聞かない。
とても初歩的な質問で申し訳ないのですが、 2003年6月16日(月)8:44 という文字列から 「6月16日(月)」と「8:44」 を取り出すにはどうしたらよいか教えていただけませんか? よろしくお願いします。
>>414 $hiduke='2003年6月16日(月)8:44';
@hiduke=$hiduke=~m/(\d+月\d+日\(.+?\))(\d+:\d+)/;
print "@hiduke";
416 :
nobodyさん :03/06/16 10:42 ID:QXmqryyp
417 :
nobodyさん :03/06/16 10:52 ID:01UxcTvV
質問です エディタで見るとちゃんと改行されて見れますが log.dat内でも改行される様に するのはどすればいいのでしょうか すんません。初歩的質問で よきお知恵を 例えばこんなのです $log = $ENV{'HTTP_REFERER'}; open(LOG, ">>./log.dat"); print LOG "$log\n"; close(LOG);
>>417 意味不明。
log.dat内でも見られるってどういう意味?
改行っつったら、文字コードの話か、<br>の話か。
ともかく落ち着いてわかりやすく説明してくれ。
419 :
nobodyさん :03/06/16 11:38 ID:01UxcTvV
>>418 すんません。ちょっと落ち着いてみます。
えーと
FTPとかでlog.datを落としてメモ帳で見る、もしくは
その場でメモ帳とかで開くとlog.datがバイナリなので
改行されず見難いです。
まあ普通にエディタ使えばいいじゃんと
言われればそうなんだけど
出来ないのかなぁ と
うぐ、なんか説明へただぽ
>419 激しくスレ違いだな。 改行コードの問題だ。 素直にエディタ使え。
>>419 うむ、たしかにちとスレ違い。
まあ、どうしてもメモ帳が使いたいなら、SJISにして書き込むなり
なんなりしたまい。
果てしなく意味のない行為だとは思うが…。
>>419 バイナリ?だって、そこが勘違いの元じゃないかな。
HTTP_REFERRERは、飛んでくる前のページだから、普通のテキスト
ファイルのはず。改行コードがLFだけだとしても、windows PCだと
行がつながらないはず。Macだと?逆に、CRだけだと、windows PC
で見ると行がつながる。とっちか確かめて、
s/\r/\r\n/とか、s/\n/\r\n/とかすりゃいいんじゃ?
awkのnextfileは、Perlではどうすればいいですか。 たくさんあるファイルの1行目だけ表示したいんですが、 perl -ne 'print if $. == 1;' だと1つのファイルだけしか処理できないんで困ってます。 よろしくおながいします。
424 :
419 :03/06/16 11:56 ID:???
みんなすまんぽ
いろいろ調べても解からなかったので
かなーりパニックになってたぽ
>>422 なんか道が開けたぽ
425 :
nobodyさん :03/06/16 11:57 ID:AbGOHEQT
>>401 すみません、普通にGETとはどういうことでしょうか…?
それが分からなくて困ってます。
>>423 1行読込をたくさんあるファイルに対して繰り返し行う
>>426 どいうこと?ワイルドカード使ってやる方法キボンヌ。
awkにできてPerlにできないはずないだろうから。
430 :
nobodyさん :03/06/16 12:18 ID:8IGausxn
この場合は $a = 0; if (!$a) 真でいいんですよね。 では↓こういう式の時は if (!($a==0 && $b)) 変数が $a = 1 $b = 1 の時は 偽 $a = 1 $b = 0 の時は 真 $a = 0 $b = 1 の時は 偽 $a = 0 $b = 0 の時は 偽 でいいのかなそれとも $a = 1 $b = 1 の時は 真 $a = 1 $b = 0 の時は 真 $a = 0 $b = 1 の時は 偽 $a = 0 $b = 0 の時は 真 こっちでしょうか? よろしくお願いします。
>>433 そこまでわかってるなら自分で試せよ…。
>>419 ASCIIモードで転送しろ
と誰も言わないのはなぜだ・・・
>>433 なんだ、そのif文の条件は。
ただの嫌がらせだろ。
$aが真であり、なおかつ、$bが偽の場合という条件。
>>434 自分で書いたものではなくて試そうにも中に実際中に何が
はいっているのかも解らず1つ1つ解決していこうとは思っているのですが、
検索したり、リファレンスみたりしてるのですが、こういった例が見当たら
なかったので質問しました。よろしくお願いします。
>437 ローカルにテスト環境を作って試す。 これ常識。 マジで。
>>439 一応ためしているのですが
解ったことは
$a = 0 $b = 0 は実行されているみたいです。
でもそれだとアレ?
>>437 まあマジレスすると
$a=1;
$b=1;
if (!($a==0 && $b)){
print "ok\n";
}
こんな感じにして、4回変数を書き換えればテストは出来る。
記述が正しいかの動作確認だけなら、一々スクリプト全体を
見直す必要は無い。
>>441 ありがとうございます!!
結果がわかりました。
でも、頭で理解しようとすると自分にはとても難しい。。。
443 :
nobodyさん :03/06/16 17:25 ID:0o9Ehb4h
メールフォームを作ってます。 $addr = $ENV{'REMOTE_ADDR'}; でIPアドレスを取得するように設定したのですが 友人に送ってもらったメールのIPアドレスと自分で送ってみたものが 同じIPアドレスになってました。 なんでー???
>>443 念のため確認だが、実は二人とも同じケーブルで同じ収容局とか、
そういった落ちは無いよな?
>>443 > なんでー???
あなたの描いたスクリプトがバカだから。
と答えて欲しいの?
>>443 REMOTE_ADDRが同じだったから。
>>425 $port = getservbyname('http', 'tcp');
$iaddr = inet_aton($host);
$sock_addr = pack_sockaddr_in($port, $iaddr);
socket(SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, $sock_addr);
select(SOCKET); $|=1; select(STDOUT);
print SOCKET "GET /$path HTTP/1.0\r\n";
print SOCKET "\r\n";
@get = <SOCKET>;
こんな感じで
448 :
443 :03/06/16 18:05 ID:0o9Ehb4h
REMOTE_ADDRは同じではないと思います。 住んでる所は友人は関東で私は中部だしプロバイダーも違うし。 $addr = $ENV{'REMOTE_ADDR'}; の箇所以外に IP取得に干渉するものがあるんでしょうか? もちょい試行錯誤してみます。
1秒ごとに@dataの文字を書き出したいのですが、 ↓のようにすると、sleep(1)×配列の個数ぶん待った後 一気に出力されます。。 1文字づつ1秒間隔で出力したいのですが、、どこがまちがってますか? @data = ("あ","い","う","え","お","か","き","く","け","こ"); print "Content-Type: text/html\n\n"; print "<html>\n"; print "<title>self</title>\n"; print "<body>\n"; for($i=0; $i<=$#data; $i++){ print "$data[$i]<br>\n"; sleep(1); }
>>450 どういうことでしょうか?
ローカルで動かしているんですが、
AddHanderもして、
拡張子もcgiで、ちゃんとスクリプトのはずですが。。。
>>448 REMOTE_ADDRを記録して、それが同じだったということはREMOTE_ADDRが同じだったということではないですか?
>>451 CGIは全部実行した後出力するんだよ。たしか。
え、じゃあスリープの意味って・・・・
>>453 PerlはCGIためだけのものではありません。
MobileType(スペルあってるかな?モバイルタイプ)っていう スクリプトで、mt-load.cgiを実行したときに1行ずつ表示されてたんだけどなぁ。 nphでもなさそうだし・・・
>>457 ほんとだ、localついてて見落としてた。。。
でも、sleepもないし、nph-*.cgiでもないのに・・・
どういう仕組みなんでしょうか?
うぅ、何回も1行ずつ流れてるのみてる・・ イイナァ
>>443 IPをHOSTに変換してみたら何かわかるかも
どれもこれもネタか? あああ鬱。
462 :
458 :03/06/16 22:08 ID:???
ほんとお願いしますよ~~ どうやったらできるんでしょ。。 ネタとか言わないで・・・
REMOTE_ADDRが常に同じ値になるように設定してあるサーバがあるよ。
REMOTE_ADDRを表示するだけのスクリプト書いて いろんな串さしてみて試せば?
>>449 $| = 1;
@data = ("あ","い","う","え","お","か","き","く","け","こ");
print "Content-Type: text/plain\n\n";
for($i=0; $i<=$#data; $i++){
print "$data[$i]<br>\n";
sleep(1);
}
exit;
これでやってみれ。
466 :
458 :03/06/16 23:57 ID:???
>>465 ん~、やっぱり始めに全部sleepして一気に吐き出しますねぇ。。。
いっそのこと、1行ずつ表示する部分はJavaScriptに任せちゃうとか。
469 :
458 :03/06/17 00:12 ID:???
>>466 htmlについてもよく考えてみれ。
ブラウザがソースを受け取り、解釈してからレイアウトを決めて
どの時点でどういう順番で表示するか保証はないんだぞ?
471 :
458 :03/06/17 00:14 ID:???
NNならちゃんと1文字ずつ出ました。 IEだと無理です。
472 :
458 :03/06/17 00:17 ID:???
うーんと、、、 1行ずつ表示する文字をdatなりに保存して読み出したいので、cgiがいいんですけどね~。。 javaはソース見え見えなのがいやだなぁ。。
474 :
458 :03/06/17 00:20 ID:???
>>473 え???
俺、ローカル(Win)でやると、
あ<br>
い<br>
ってのが一気に表示されて、
レンタルサーバ(linux)だと、
ファイルのダウンロードになった
>>472 とりあえずJavaとJavaScriptは別モンだゴルァ!とお約束の突っ込み。
CGIでは、表示するぶんだけの文字列とそれを表示するためのJavaScriptを出力して
実際の表示はJavaScriptに委ねる、って意味なんだけど。
まあ、可能かどうかは分からんが。
476 :
nobodyさん :03/06/17 00:39 ID:fNA5EU9/
初心者の質問で申し訳無いのですが foreach文の中で次のループに移るコマンド(for文のcontinueみたいなやつ) はあるのでしょうか? 御教授くださいませ。
sage忘れスンマソン(;´Д`)
>>476 next
あとsageてもスレが下がるわけじゃないんで。
>>476 goto
あとsageてもスレが下がるわけじゃないんで。
しかし何で一文字づつ表示させたいの? まさか、CGIで よ う こ そ とか、下らない事やりたい訳じゃないよね。 JavascriptやFlashが無難だと思うけど・・・。
だよな 見るほうはさっさと表示されたほうがありがたいだろうに 自分のセンスでおもしろいカッコイイと思ってもみんながそうとは
483 :
nobodyさん :03/06/17 01:08 ID:3tOJ9ih6
皆さん目が悪いようなのでもう一度質問します。 SSIでCGIを呼び出そうとして失敗したときに [an error occurred while processing this directive] というエラー文が.sthmlファイルの中に出てくるんですが、 この文章を自由な文面に変更したり出来るんでしょうか? 出来ればリンクタグに変えたいんですが・・・
>>483 <!--#config errmsg="?????" -->
486 :
nobodyさん :03/06/17 01:13 ID:QhMbf/ik
globについて質問ですが、 my $file = '/dir/*'; my @list = glob("$file"); このようなイメージでglob内ワイルドカードを 変数化することは可能でしょうか。
>>486 そのやり方じゃダメなの?
それより、何でスカラー変数をいちいち "" で囲むんだろう。
たまにリストでそれやってハマってる人がいるけど、なんかそういう参考書があるのだろうか。
>>483 頭が悪いようなのではっきり言っておきます。
Perlに関係ないだろうが。
490 :
486 :03/06/17 02:09 ID:???
いや、ごめんなさい。 $file = '/dir/*'; my @list = <$file>; はいかないのに $file = 'dir/*'; my @list = </$file>; はいったので、すごい疑問に感じ、ここでglobについて 質問させていただきました。 雰囲気を壊してしまいすみませんでした。
>>490 <$file>と書いた場合は、$fileがファイルハンドルと解釈されてるだけだよ。
<>演算子は、中身によって行入力になったりグロブ演算子になったりと、紛らわしい。
だからPerl5以降では、glob()を使ったほうがいい。
掲示板の記事削除処理において ファイルを開き、記録された記事番号とパスワードを取りだし 入力されたパスワードと選択された記事をそれぞれ比較して 該当した記事以外を記録しなおすという処理を作ったんですが いろいろいじってるうちになんだか変な動作するようになりました。 入力したパスワードが正しいとなぜが一番違いの記事のパスワードと比較します。 入力されたパスワードが間違ってると、その記事のパスワードと比較します。 何が悪いんでしょう?
foreach $line (@lines) { $del = 0; local($no,$key) = split(/,/,$line); if( ( $FORM{'delete'} eq $key ) ){ if ( $no eq $FORM{'target'} ) { $del = 1; } if ( $del == 0 ) { push (@line2,$line); } } else { &error("キーが違います。"); } }
494 :
492 :03/06/17 07:08 ID:???
493も俺です(´∀`;)
オブジェクト指向で書いているのですが、ファイルのラッパーのような ものを作っています。その際、ファイルハンドルなどはインスタンスごとに 違うものにしたいのですが、どのようにすればよいのでしょうか? 滅茶苦茶な例なのですがC&Perlで言うと下のようなイメージでやりたいと思っています my $seif = shift; $self->{handle} = fopen( …
497 :
>>492 :03/06/17 13:30 ID:XeNVFdef
foreach $line (@lines) { $del = 0; local($no,$key) = split(/,/,$line); if( ( $FORM{'delete'} eq $key ) ){ if ( $no eq $FORM{'target'} ) { $del = 1; } if ( $del == 0 ) { push (@line2,$line); } } else { &error("キーが違います。"); } } 字下げくらいしろ。 見易さが違うだろうが。 っといいつつ、俺はPerlに関しては初心者だからまだ分からんがな。 今アクセスログやってんねや。んじゃ
>>492-493 その書き方はおかしいだろう。
記事番号$noはユニークだろうが、パスワード$keyは同じ値が
ありえるはず。
評価の順番が逆だ。
これでどうだ?
foreach $line (@lines) {
local($no, $key) = split(/,/,$line);
if ( $FORM{'target'} eq $no) {
if ( $FORM{'delete'} ne $key ) { &error("キーが違います。"); }
} else {
push (@line2, $line);
}
}
書き直しただけで、上記は再考の余地あり。
最初のほうで一致しても最後までループ処理が続いてしまって無駄。
499 :
新着 :03/06/17 14:12 ID:nJC3WMH6
質問です。 cryptの暗号化についてです。 cryptによる暗号化は、サーバーによって結果が異なるのでしょうか? 自分のローカル環境とinfoseekの鯖では同じ結果になったのに、 友人のFreeBSDの鯖では結果が異なりました。 ラクダ本も見てみたのですが、詳しく載ってないみたいで。 以下がソースです。 #!/usr/local/bin/perl $salt = 'sa'; $key = 'hogehage'; $crypt = crypt($key,$salt); print "Content-type: text/plain\r\n\r\n"; print "salt=$salt\n"; print "key=$key\n"; print "crypt=$crypt\n"; ローカルの結果が、 salt=sa key=hogehage crypt=saaqOoONNsWPU 友人の鯖での結果が、 salt=sa key=hogehage crypt=$1$sa$YaIYjBa3kyQD6Oqo6pfMi. でした。 もし可能なら、暗号化した後の結果が同じにしたいのですが、 どなたか方法をご存知ないでしょうか?
というか、同じになったら暗号化にならないだろ。
同じ種と同じキーを使えば、同じ結果になるのがcryptではないんでしょうか?
504 :
500 :03/06/17 14:56 ID:???
>503 どうやら友人の鯖ではMD5がなにか関係しているようですね。 ライブラリの紹介もありがとうございました。 試してみたところ、これを利用すれば同じ結果になりました。 ありがとうございました。
505 :
nobodyさん :03/06/17 15:37 ID:in7oUIeX
CSVを開いたあと、各行(@values)について、 $LOCATION[$values[0]] = { "locationname" => $values[1], としているのですが、 @locationlist = split(/_AND_/,$in{'locationid'}); #($in{'locationid'}は「1_AND_3_AND_7」のカタチで入ってきます。) for($i = 0; $i <= $#locationlist; $i++){ $HtmlLocationList .= $LOCATION[$locationlist[$i]]->{locationname} . "***": } で、表示されるのでが「***」の部分だけで、 $LOCATION[$locationlist[$i]]->{locationname}の部分が表示されません。 なぜなのでしょうか?
document.write("<font color="#FF9900">◆</font>リニューアルオープンいたしました!"); というものから、「<font color="#FF9900">◆</font>リニューアルオープンいたしました!」を取り出したいのですが、 $JSAll =~ m/document\.write\(\"(.*)\"\)\;)/; で。$1を得ようとすると、 /document\.write\("(.*)"\);)/: unmatched () in regexp at index.cgi line 34. といわれてしまいます。 どうしたらちゃんと動くのでしょう? そもそも、 unmatched ()ってどういう意味なのでしょう?
>506 ()の数があってない。 板違いだが、1行目のJSすらエラーだな。
508 :
nobodyさん :03/06/17 16:37 ID:AMyzcYWt
$str = 'document.write("<font color="#FF9900">◆</font>リニューアルオープンいたしました!")'; $str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
510 :
nobodyさん :03/06/17 16:41 ID:vHbufOUB
$str = "abcdabcdef"; @array = split(/\t/, $str); foreach $value (@array){ $flag = 0; foreach (@result){ if($_ eq $value){ $flag = 1; } } if($flag == 0){ push(@result,$value); } } 重複した要素を除く処理を作ったんですけど無駄はありますか?
>510 ツッコミどころが多すぎてどこからつっこんでいいかわからん。 無駄以前に、思い通りの動作しないだろ。
>>506 エスケープしなきゃいけないんじゃないですか?
513 :
_ :03/06/17 16:51 ID:???
>>510 漏れもそんなに詳しいわけじゃないが、こんなんは駄目か?
$str = "abcdabcdef";
@array = split(/\t/, $str);
foreach $value (@array){
$hoge{$value} = '';
}
foreach $value(keys(%hoge)){
push(@data,$value);
}
$a = 'abcdabcdef'; @a = split(//,$a); for (@a) { $a{$_} += 1; } @a = sort keys %a;
517 :
nobodyさん :03/06/17 17:26 ID:vHbufOUB
>511 @resultはどこから沸いて出たんだ? $strにタブがないのにタブで区切ってどうするんだ?
>518 =~ s/>511/>510/;
520 :
nobodyさん :03/06/17 17:34 ID:UJvendEv
>>510 その処理が、全体のパフォーマンスに影響するのかな?
影響しないなら、考えるのが無駄。
521 :
nobodyさん :03/06/17 17:50 ID:vHbufOUB
>518 @resultは宣言してないだけ、 タブが勝手に消えるのは2ちゃんねるの掲示板の仕様 >520 パフォーマンスのこともあるけど、 もっといい方法があるならそれを見て勉強になるし。
522 :
nobodyさん :03/06/17 17:53 ID:GIfprx1b
質問です。 サブルーチンのなかで、サブルーチン書くのはなんか悪いことありますか? グローバル変数つかうのと、一連の処理をすべて、同じブロックに入れるのはどれがいいでしょうか?
523 :
nobodyさん :03/06/17 18:16 ID:vgoejlvM
すみませんが、 正規表現で使う「=~」の「~」つまりチルダですが、これってチルダでいいですか? というのは私の持っている本ではこの波が真ん中に来ていて、チルダに見えないんですよ。 実際これはチルダで委員ですか?
>522 サブルーチンの中にあるサブルーチンを どこか別のサブルーチンから呼び出す時に 面倒だ罠。
>>523 それはフォントの問題。どうしても心配ならキャラコード調べてみれば?
>>524 その同じブロックにある中から以外から呼ぶことはありません。
それならどうでしょうか?
527 :
506 :03/06/17 18:31 ID:???
>>507-508 ありがとうございます。
ところで、
$srt = 'document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';
$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
print $str;
とやったのですが、
なんにもprintされません。確かに正規表現はあってるかと思うのですが・・・・・
わかるかたいらっしゃいますか?
>>510 my %temp;
@a = grep !($temp{ $_ }++), @a;
>>526 local *hogehoge = sub {
return shift ** shift;
};
530 :
523 :03/06/17 18:59 ID:SJassQej
チルダでよかったんですね。 動きました。 別のところでエラってました。スマソ
チルダではなくティルデ
よくBEGIN not safe after errors--compilation aborted at index.cgi line 48 っていうエラーを見るんですが。 BEGIN not safe after errorsってどういう意味ですか?
>>529 その手があったか!?ありがとうございます。
それを、ブロック内で呼び出せば、その中の変数使えますよね。
>>527 自分の書いたコードをよーく見てごらん。
ちなみに、「"」はメタ文字じゃないから、「\」はあってもなくてもいいよ。
535です。↑HNは前に別スレに書いたものが残っていただけです。
537 :
525 :03/06/17 21:58 ID:???
>>527 10回*30秒くらいみたのですが、わかりませんでした・・・
どうみても正しいようにしか見えないのですが、
どうしてこんな結果になるのでしょう・・・
どうか教えてください。。。
>>537 --- test.p ---
$srt = 'document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';
$str =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/;
print $str;
---
> perl -wc test.p
Name "main::srt" used only once: possible typo at test.p line 1.
test.p syntax OK
>
540 :
458 :03/06/17 23:41 ID:???
ほんとしつこいけどお願いします。 おっしゃられたとおり、私の環境がおかしいにしても、mt-load.cgiのは正常に表示されるんです。。 だれか、教えてくださいまし・・・・
>540 そのしつこさを別の方向に向ければいいのに。 正常に動くスクリプトがあるなら、いらない部分をガンガン削って、どの部分でそれを表現してるか調べてみるとかあるだろ。 レス遡るのもマンドクセ。
>>537 ソースを1文字ずつ声に出して読んでみれば分かる。
>>540 しつこいよ。
そのソースを解析すりゃいいだろう。
543 :
座敷荒氏 :03/06/17 23:50 ID:NkO+IDyD
Perlでファイルの存在確認をして Shellに結果を渡すようにしたいのです。 Perlでtestコマンドを実行してから結果を どうやってShellに引き渡せばいいのでしょうか? 最終的には1ではなく100や255エラーを返すようにしたいのですが。
544 :
525 :03/06/18 00:00 ID:???
>>538 それは、たぶんですが、
文法は間違いないということですよね?
なぜ、$strが空になってしまうのか、教えていただけませんか?
(それともデバッガになれてないので勘違いしてるのかしら)
この板ってカスばっかだな あってもない自分の脳内知識をお互いに自慢してる。 横から見てるとハライテーヨ
>>543 exit $error_number;
>>544 Name "main::srt" used only once: possible typo at test.p line 1.
(main パッケージの srt という名前の変数は一度しか使われていません。
誤字の可能性があります。(test.p の 1 行目))
548 :
547 :03/06/18 00:29 ID:???
>>544 なぜって……さっきからみんな指摘してるよ。
(≧∇≦)ぶぁっはっはっ!!まだ気がついてなかったのか (・∀・)ノ" またあとで見に来るよん
551 :
506 :03/06/18 01:07 ID:???
ああああ、情けない。。。。 しかし、デバッガって便利なんですね。使ってみよう。 いままでKCatchしか使ってなかった。
|_・ ) ワカッタノカナ?
553 :
506 :03/06/18 02:39 ID:???
すいません、もう1ついいですか? 実は、「document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';」 というのは外部jsなんです。(SSIが使えないので、SSI Includeみたいに使おうとしている)) なので、↓の1行目で、jSファイルを読み込んでその文字列まるまるを返してます。 $topics = &responce_filesubstance($PathTopicsJS); jcode::convert(\$topics, sjis); $topics =~ s/^\w+\.\w+\(\"(.*)\"\)$/$1/; ところが、そうすると、 $topicsが「document.write("<font color=#FF9900>◆</font>ホームページがリニューアルオープンいたしました!")';」 のままで置換してくれなくなってしまいました。どうすればいいのでしょう? 一応、responce_filesubstanceも書いておきます。 sub responce_filesubstance{ my($PathFile) = $_[0]; my($filesubstance); #ファイルを開いて読み込む open (IN,$PathFile) or die "cannot open $PathFile:$!"; flock(IN, 1); while($LineTmp = <IN>){ $filesubstance = $filesubstance . $LineTmp; } close IN; &jcode::convert(\$filesubstance, "euc"); #結果 return $filesubstance; }
>553 なんで外部JSをそのまま使わないの? SSIなくても普通に使えるでしょ。
555 :
506 :03/06/18 02:52 ID:???
>>554 JSの中身を更新できるスキル?があれば十分なのですが、
HTML知らないお客さんに納品するものなので、
外部JSの中身をコンパネで動作できればなと、。
よくわかんないけど 置換する直前に$topicsを一度はき出して中身を確認したら? eucに変換したモノをまたShift_jisに変換するのって意味あるのん?
>>555 >お客さんに納品
プロですか!?それで。
厨房かと思ってた。
558 :
492 :03/06/18 06:06 ID:???
>>497 半角スペースで入れたら字下げ消えた(´Д`)
>>497 ありがとう、確かに処理の順番逆だったね(´∀`)
で、やってみたころ
相変わらずエラー表示が出ます
変数を表示させたところ
パスワードはマッチするようになりましたが
半角スペースやタブが消えちゃうのはなぜ ? 消えないようにするには、どうすればいいの ?
TEST
nbsp;で入るようだ。 全角でもいいけど、えらっちゃうしね。 スペースを 変換してくれれば楽なのに…。
562 :
555 :03/06/18 10:44 ID:???
>>557 すまそ。で、最近そんなもんじゃない?前任者はもっとだめだめだった。
ふと思ったのですが、JacaScriptで、SSI INCLUDEみたいに、 ファイルを読み込んでくれる関数はないですか?
>563 JavaScriptスレで聞いてこい。
566 :
nobodyさん :03/06/18 15:57 ID:yTFW11Gl
掲示板などのTDタグでWIDTH=”80”と指定して、そこに半角英数字を80 ピクセル以上書くと折り返し表示してくれなく、80ピクセル以上に テーブルが伸びてしまいます。 全角文字や半角カナ文字は80ピクセル以上だと自動改行してくれるのに 半角英数字だと改行してくれないのはなぜなのでしょうか? また、改行できる方法を知ってる方がいましたら教えてください。
>>566 あのさあ、何でこのスレで質問したのかをまず教えてくれない?
569 :
566 :03/06/18 16:03 ID:???
>>567 掲示板などのスクリプトの中にperlで
半角英数字が連続したときに自動改行してくれる
構文など有るんでしょうか、と書きたかったのです。すみません。
570 :
DBMのBSD DB(Berkeley DB)はMySQLより早いのか? :03/06/18 16:04 ID:kZ9NfMGd
>>566 板違いも甚だしくてワロタ
<td style="width: 80px;table-layout:fixed;">
とか。
ブラウザ依存だから期待せぬように。
572 :
:03/06/18 16:09 ID:???
$_="TooLongLongLongString"; s/([a-zA-Z0-9\-_\?\.]{5})/$1\n/g; かな。この場合5文字で改行。
違うと思うが
>>569 2バイト文字が混在した文字列を途中で分割するのはわりと面倒なので、
そういうのは普通ブラウザの表示に依存させてしまうことが多い。
んで、
>>566 の質問については板違いにつき、ここでは答えない。
system("ls"); で、得られたファイル名前、ディレクトリ名前を配列に代入したいんですが どうすればいいでしょうか?
577 :
nobodyさん :03/06/18 19:49 ID:fCn6DpDd
Cookieについてなんだけど、次の簡単なコードなんだけど、 IEだけが機能してくれない、Opera、Mozilaは問題ないんだけど、 誰かわかりません?、オナガイします、マジでひとつ。 #!/usr/bin/perl -w print <<"END"; Content-type: text/html Set-Cookie: DATA=0123456789; expires=Mon, 30-Dec-2020 23:59:59 GMT END foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"<br>\n"; }
while(1) {
print "ぬるぽ\n";
}
こんな感じに半角でインデントして、
>>578 自分へのアンカーをつけてポップアップで読む
>>577 >>1 に書いてある3つの手順をちゃんと踏んでおくようにね。
あなたの場合、1番目と3番目が書いてない。
>>577 > Content-type: text/html
不要。
よってPerlとは関係なし。
逝って良し。
581 :
443 :03/06/18 20:24 ID:???
えっと、
>>443 です。
みなさん色々ありがとうございます。
2日間調べてやっと原因が解りました。
>>463 さんが言ったようにサーバー側の設定の問題でした。
$ip = $ENV{'X_FORWARDED_FOR};に変えたら
ちゃんと違ったIPが取得できるようにました。
$useragent = $ENV{'HTTP_USER_AGENT'};でユーザーエージェントも
取得したんですが、私はWindows xpなのにWindows NTになっていました。
こういうもんなんでしょうか?
>>570 どっちが速いとかの問題じゃない訳で、設計しだいな訳で、Perlと関係ない訳で。
>>581 Operaだと2000とXPがちゃんと認識されます。
IEだと、2000はNT5.0、XPがNT5.1と識別されます。
って言う話だ。
確かめたわけじゃないが。
584 :
:03/06/18 20:39 ID:???
585 :
_ :03/06/18 20:45 ID:???
>584 FTPでログを見る。 管理人にしかできないがな。
てきすとの中にURLがある場合、URLに自動でリンクを張るにはどうすればいいのでしょうか? (2chみたいに) なお、テキストの中には、2つ以上URLがある可能性もあります。
593 :
nobodyさん :03/06/18 22:22 ID:8AjElXD0
594 :
543 :03/06/18 22:45 ID:???
一日じっくり調べてみました。 system("/usr/bin/test -f /path/file"); #ファイル存在確認コマンド これでfileという名前のファイルの有無を確認できますよね?
>>594 実際に試せ。自分の目で確かめろ。
ついでに「ファイルテスト演算子」でググれ。
@aray = qw[12\tあ 5\tい 3\tう 4\tえ 1\tお]; ↑のような配列があった時これを "12 5 3 4 1" の部分を見て 下のような数の大きい順にソートするようなスマートな方法は無いでしょうか? @array = qw[1\tお 3\tう 4\tえ 5\tい 12\tお];
597 :
543 :03/06/18 23:06 ID:???
>>595 そうしたいんですけど家に環境ないんです。
・゚゚・o(iДi)o・゚゚・。
検索はしてみますね~♪
ありがと~
他にも助言お願いします。
>>597 `/usr/bin/test -f /path/file`
backtick
ローカルでは問題無いのですが、サーバにアップしてテストすると、 余計な改行コードが加えられてしまいます。 お願いします。 $match = 0; open(votelog,"+<vote.log"); @votelog = <votelog>; $last = @votelog + 0; for($num=0;($num<=$last)and($match==0);$num++){ ($name) = split(/\,/,$votelog[$num]); if($namekey eq $name){ $votelog[$num] =~ s/\n//; $votelog[$num] =~ s/\r//; ($name,$comment,$votenum) = split(/\,/,$votelog[$num]); $votenum = $votenum+1; $votelog[$num] = "$name,$comment,$votenum\n"; $match = 1; } } seek(votelog,0,0); print votelog @votelog; close votelog;
600 :
596 :03/06/18 23:53 ID:???
>>596 文字が含まれてても普通に
@array = sort {$a <=> $b} @array;
でやってくれるんですね。。
では↓な場合にスマートに数字の大きい順で
ソートする方法あればお願いします。
@aray = qw[a\t12\tあ b\t5\tい c\t3\tう d\t4\tえ e\t1\tお];
602 :
543 :03/06/19 00:25 ID:n1s+2eOn
家のRedhatでやってみました。 以下のどちらの場合もだめでした。 system("/usr/bin/test -f /path/file"); #ファイル存在確認コマンド system(`/usr/bin/test -f /path/file`); #ファイル存在確認コマンド どうしてでしょう? ご助言くださいませ。 syntax error near unexpected token `system(上記)' と表示されてしまいます。
>>602 確かに test コマンドもシェルではファイルテストに使うが、
Perlerなら
-e "/path/to/file" and print "存在したポ\n";
>>602 なあ、なんでsystemなんか使うわけ?
しかもそのリスト・・・
>>602 うちのActivPerlでも駄目でありました
608 :
492 :03/06/19 00:44 ID:???
謎が解けました。 ループ中にエラー処理はさむと 比較しなくていいものまで反応してエラー出してました。 パスワード間違いの場合はリロードさせる(何もしない)事で回避しましたが エラー表示やっぱ出したいな……。
>>608 それは比較のやり方が間違ってるだけだろう
611 :
543 :03/06/19 00:55 ID:???
OSのコマンドを使うにはsystemコマンドと本に書いてあったものですから・・・ いま603さんにいわれたとおりに #! /usr/bin/perl -e "/path/path/ファイル名" and print "ok\n"; でokが表示されました。 ありがとうございました。 Perlerっていうのもカッコイイ(゚∀゚)~ やっと次に進めます。 まだとっかかりにすぎないけど がんばります!
612 :
543 :03/06/19 00:57 ID:???
>>610 Linuxですが用意しました。
本番機はHP-UXなのですが
PerlのVerが同じ5なら問題ないですよね?
613 :
543 :03/06/19 01:20 ID:n1s+2eOn
>>603 あれ?
「-e」というのは「test -e」とはまったく別なんでしょうか?
ファイルが1つの場合は611で成功したのですが、複数のファイルの存在確認をする必要があるため、
if文で一つでもファイルが確認できなかった場合にはエラーを表示するようにしたいのですが。
ファイル存在確認フロ-(下手でごめんなさい)
ファイルA --
y| n |
↓ |
ファイルB --
y| n |
↓ |
ファイルC --
y| n |
↓ ↓
正常終了 異常終了
exit(0) exit(100)
614 :
603 :03/06/19 01:26 ID:???
for (@files){ -e $_ or die; }
615 :
596 :03/06/19 01:32 ID:???
>>610 どうもありがとうございます。
が、思った結果とはちょっと違うです。。
しかしなんとなくスマートに書く方法がわかったような気がします。
616 :
543 :03/06/19 01:44 ID:???
>>614 ありがとうございます。
さらに@filesで指定したファイルがすべてあった場合には
exit(0)で抜けて、足りなかった場合にはexit(100)で抜けるような
if文を加えることはできませんか?
617 :
603 :03/06/19 01:47 ID:???
こう? for (@files){ -e $_ or exit(100); } exit(0);
618 :
543 :03/06/19 02:04 ID:???
>>617 あ、できてます!
どうもありがとうございます\(^▽^)/
ただ上記だと「-e $_ or exit(100);」の方が
@filesが存在した場合に返す終了ステータスですよね?
exit(100)はファイルがない場合の異常終了ステータスにしたいので
ご教授頂いたexit(100)とexit(0)を入れ替えればよろしいですかね?
@filesの部分は本でわかっていたのですが
「-e」や「$_」というのはまったくどういうものか
わからなかったので…
619 :
603 :03/06/19 02:07 ID:???
入れ替えなくていいと思うが・・・ まア、実際に試せばわかるけど
>>618 自分で調べようとかいう気はないようだな。
>>595 でも「ついでに「ファイルテスト演算子」でググれ。」とレス
もらってるのに。
621 :
543 :03/06/19 02:20 ID:???
>>619 あ、本当だぁ。
ごめんなさい。完璧でした。
本当にありがとうございましす。
これでファイルの存在確認の方は
終了コードをシェルに渡すことができると思うので
完璧みたいです。
今度はファイル削除…
同じ要領でいいのだろうけど
そのまえに「-e」や「$_」を理解しなくては…
622 :
543 :03/06/19 02:24 ID:???
>>620 いえ、調べました。
すぐにひっかかったページをみると
一見してtestコマンドのようにみえたので
「-e」はtest -eかと思って、できるだけ略さずに書こうと思ったら
×でした。
それでtestコマンドではないのだろうと考えてお願いした次第です。
-e が他の予約語と対等だとは、普通思わん罠
>>623 だから「ファイルテスト演算子」という言葉が出てきたのだが。
入門本ばかり眺めているんだろうな鬱。
スペースだけに一致する正規表現はスペースそのものだけしかありませんか?
\s
>>625 /^ +$/ でも /^\x20+$/ でも /^\040+$/ でも /\Qスペース\E/ でも
ご自由に。
>>626 \s == [ \t\n\r\f]
>>612 5 と言っても色々あるし、Linux でも Win でも何でもいいけど、
少なくとも手元のテスト環境で問題なく動くようになってから
本番機にもっていく事が大事。
すみませんが、どなたか、Perlで2つのファイルの差分を抽出する
方法をお教え下さいませ。
はてなアンテナ(
ttp://a.hatena.ne.jp/ )でやっているような、
htmlファイルの中の更新(追加or変更)された部分だけを抜き出して
来る方法です。定番的な一番効率の良いやり方はないでしょうか?
すみませんが、perlでアクセス解析作っているのですが、 ブックマークと、URL直打ちを見分ける方法ってありませんか? JSの力を借りなければなりませんか?
>>631 IEならfavicon.icoを読みにいっているかも。
って事で板違い。ヴァー。
>>632 板違いですか。
スマセン
ありがとうございました
634 :
543 :03/06/19 20:19 ID:???
こんばんは。 昨夜はありがとうございました。 家のLinuxで試して成功したので 本番機でテストしたのですが見事に失敗… 以下のように表示されていました。 syntax error near unexpected token `$_ or' 慌てて本番機のPerlのVersionをみてみたらVersion 4でした。 家のテスト環境はVersion 5だったのですが、これが原因でしょうか? 手持ちの本はVersion 5を前提に書かれていますが エラーを返してきた部分については 特別Versionについては触れられていませんでした。
>>634 いまだに、4のサーバなんてやめちまえ!
Perl4なんてまだあるのかよ。 ある意味驚きだな。
637 :
543 :03/06/19 20:48 ID:???
>>635 さ、さすがにそれは…
やっぱりVersion 4は「$_」に対応していないんですか?
>635-636 俺のプロバスペースもPerl4だぞ。 >637 $_は使える。
>>638 やめちまえ!
ていうか、myもつかえないんだよね?
>639 うん、myは使えない。 かなり不便。 $a ||= 1;もできない。 省略形はかなりピンチかもしれないから、「-e $_ or exit(100);」は 「unless(-e $_){exit(100);}」とかにした方がいいかもしれない。
4から5への改良点は、痒いところに手が届く感じのが多いから、 5に慣れてから4コンパチで書くのは辛いな
643 :
nobodyさん :03/06/19 22:58 ID:7O2enBqm
質問。 Perlで SDBM_Fileを使ってるんですけど、 MDBM_Fileにそのまま変えられますか? SDBMになくてMDBMにある制限みたいなものってあるでしょうか?
644 :
nobodyさん :03/06/19 23:06 ID:QrRxrm0K
sub aaa{ my $abc = 255; &bbb(\$aaa); } なんか変になるんですけど、これって有効にならないんですか?
645 :
nobodyさん :03/06/19 23:06 ID:QrRxrm0K
間違えた。 sub aaa{ my $abc = 255; &bbb(\$abc); } これ。
646 :
nobodyさん :03/06/19 23:13 ID:7O2enBqm
>>655 myしてある変数のリファレンスは無理だよ
649 :
nobodyさん :03/06/19 23:25 ID:7O2enBqm
>>645 何の問題もないように見えるけど?
それが間違っていると思うのなら、間違いなく何かを勘違いしているよ。
>>648 それは問題ない。
というか、出来なきゃ困る。
651 :
603 :03/06/19 23:28 ID:???
>>645 sub bbb{ } が定義されてないから当然
>>649 ROMってるよ。がんがれ、某コテくん(?)
sub bbb{ } の中身がわからんとなぁ
654 :
恐らく :03/06/19 23:37 ID:???
sub bbb { print "なんか変\n"; }
655 :
645 :03/06/19 23:43 ID:???
すみません。 どっか他の所で重大な間違いをしてたっぽいので、しっかりデバック取ってきます。
656 :
543 :03/06/20 00:38 ID:???
>>640 できました。
下の記述でfileが無い場合は100で
fileがある場合は0で終了するようになりました。
------------------------------
#! /usr/bin/perl
@files = ("/home/path/file",);
for (@files){
unless(-e $_){exit(100);
}}
exit(0);
------------------------------
今度はファイル削除用のを作ります。
これまで相談して気になるのは、
なぜ皆さんがsystemコマンドを使わなかったのか
ということです。
お話していなかったのですが、実際のオペレーションでは
ファイル存在確認の後、ファイル削除をおこなうので
systemコマンドであればcommandを書き換えるだけで済むのかなぁと。
なにか理由があるのでしょうか?
>>656 簡単に言えば、systemを使わないのは特に必要ないから
それとちょっと気になるんだけど
>>621 に書いてあった
>これでファイルの存在確認の方は
>終了コードをシェルに渡すことができると思うので
シェルという語が出てきてるけど、どんなことやってるの?
シェルからperlプログラムを実行して戻り値を受け取るわけ?
お前ら
>>1 読んでんのか?
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
これから質問する奴は
1:○○
2:△△
3:××
と書け。それ以外は皆放置しろ。
どうせ
>>1 も読まない奴はスレ違い・板違いがほとんどだしな。
659 :
nobodyさん :03/06/20 01:24 ID:2h2vJ76G
すいません。質問させてください。 1:○○ 2:△△ 3:××
あ、ぼくもいいですか? 1:○○ 2:△△ 3:××
661 :
543 :03/06/20 02:40 ID:???
>>657 >シェルという語が出てきてるけど、どんなことやってるの?
>シェルからperlプログラムを実行して戻り値を受け取るわけ?
まさしくそのとおりです。
657さんのいうとおりの動作をさせたいのです。
それを前提にしても
汎用性という意味(?)でsystemコマンドよりも
656記載のもののほうがよろしいでしょうか?
なあ、いいだろ 1:○○ だめよ、こんなところで 2:△△ 3:××
663 :
nobodyさん :03/06/20 04:00 ID:PsiyBD1J
すいません。 $bst .= 'W' unless($bst =~ /W/); の意味が分から無くて困っています。 CGIゲームで、このプログラムにより、 攻撃力が1だけ上がるのですが、 10位上げたいので。 ポイントは戦闘中だけ上がると言う事なので、 難しいんだと思いますが。
ゲームは分からないけど、 $bstがWにマッチしなければ、$bstにWを追加 $bst .= 'W' unless($bst =~ /W/);
1:自分はエロエロ画像が見たい。 2:それでグーグルとか使って検索をやってみたが・・・ 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
>>665 解決:一つエロエロサイトを見つけて、そこのリンク辿ってがんばれ。
マジレス:くだらんネタはよせ。
>>665 > 1:自分はエロエロ画像が見たい。
> 2:それでグーグルとか使って検索をやってみたが・・・
> 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。
print (1:!~ /○○/ || 2:!~ /△△/ || 3:!~ /××/) ? 'スルー\n' : '回答してみる\n';
# 結果表示
スルー
↓次の質問ドゾー
※ 俺脳内処理 ※ if (0) { > 1:自分はエロエロ画像が見たい。 > 2:それでグーグルとか使って検索をやってみたが・・・ > 3:それだとなぜかグロ画像ばかりが出て上手くイかなかった。 }
669 :
nobodyさん :03/06/20 14:41 ID:CDccIPBD
以下の、 HTML::Templateで、ループ部分がまったく表示されてないのですが、 どこが悪いのかわかりませんでしょうか? for ($i=0;$i<=$num;$i++){ $ORG{$i} = { "orgname" => $values[$orgmaster_name2seq{orgname}], "number_per_class_max" => $values[$orgmaster_name2seq{number_per_class_max}], "langlist" => $HTMLlanglist, }; } my $template = HTML::Template->new(filename => './tmpl/search_result.html'); $template->param( ORGLIST => \@ORG ); print $template->output; --------------------------------------------- 以下、テンプレファイル。 <!-- TMPL_LOOP NAME="ORGLIST" --> <!-- TMPL_VAR NAME="ORGNAME" --></a></td> <!-- TMPL_VAR NAME="LANGLIST" --></td> <!-- TMPL_VAR NAME="NUMBER_PER_CLASS_MAX" --></td> <!-- /TMPL_LOOP -->
670 :
nobodyさん :03/06/20 15:00 ID:59oEJQW+
下のようにしてクッキーを書いたのですが、 cookies フォルダの中に格納されません。 クッキーの有効期限を指定していないからでしょうか? とするとどこにクッキーの情報は格納されているのでしょうか? print "Set-Cookie: name=$id; \n";
671 :
nobodyさん :03/06/20 16:34 ID:Me43kE/L
>>670 printしてるのがヘッダ部分ではない、に1票
674 :
669 :03/06/20 19:14 ID:???
>>669 なんですが、
$iが増えてるのに、$#ORGが、最終的に-1になってしまってます・・・
なぜなんでしょう?
>>673 既にそっちに書いているもよう
マルチだから相手にすんな
>674 []と{}の違いわかる?
677 :
nobodyさん :03/06/20 20:58 ID:kJiV021K
webprogじゃないんだけど、perl2exeでfile::copy使った 人います?。コンパイルはできるんだけど実行の時にあれやら コレやらが足りないっていわれるんだよね。 つーか、いまいちよくわかんないなぁperl2exeって。
678 :
nobodyさん :03/06/20 21:01 ID:1Z33Vqhm
一日たった110円であなたのお店やホームページの宣伝をします!
貴方のお店&サイトを効果的に宣伝できます!
お店の足取りが悪い・・・。私のサイトにはあまり人が来ない・・・。などお悩みの方は、
ぜひおすすめです。手軽&簡単しかも日本中に宣伝できますので、
大幅なアクセスアップが期待できます。
[料金について]
1日110円で宣伝&クーポン券の発行が出来ます。
年間契約で申込された場合、40,000円になります。
6ヶ月契約で申込された場合、25,200円になります。
3ヶ月契約で申込された場合、12,600円になります。
http://www.c-gmf.com/h17103.htm ぜひ一度お試しになってみてはいかがでしょうか?
679 :
nobodyさん :03/06/20 22:06 ID:Vg4M86DU
カスみたいな質問ですが・・・ #おはよう #こんにちわ お元気ですか? #こんばんわ おやすみなさい と中に書かれているテキストの中の文字を、改行を<br>に変換して、 #で区切って配列に入れたいのですが・・・。 どうすればできるのでしょうか・・・( ・ω・)
>>679 内容もさることながら、質問の仕方もカスのような気がしますが。
1. \nを<br>に変換する。
2. splitにて、#区切りの配列を生成する。
3. shiftする。
のような手順でしょうかね。
681 :
nobodyさん :03/06/20 22:18 ID:jiB8qm8t
>>679 $text = <<'_END_';
#おはよう
#こんにちわ
お元気ですか?
#こんばんわ
おやすみなさい
_END_
$text =~ s/\n/<BR>/g;
@text = split(/#/, $text);
682 :
679 :03/06/20 22:31 ID:Vg4M86DU
>>680 スイマセン、精進しまつ(;;)
>>681 ナルホド!! ・・・と思ってやってみたのですができない・・・。
$message = "./aisatu.dat";
open(FILE,"$message");
$text = <FILE>;
$text =~ s/\n/<br>/g;
@text = split(/#/,$text);
print "@text\n";
一行目の文字列しか出力されないです・・・( TÅT)
683 :
nobodyさん :03/06/20 22:33 ID:jiB8qm8t
>>682 $text = <FILE>;
これだと、1行しか読めません。
$text .= $_ while(<FILE>);
でいいと思います。
684 :
nobodyさん :03/06/20 22:52 ID:Vg4M86DU
>>683 .+゜(・∀・)+゜. 全部読んでくれました。
改行が<br>に変換されないのが気になるところですが・・・
あとは自分で調べてみます。
(TдT)ノシ アリガトウです
>684 あー。 自分で調べるか、がんばれ。 改行コードがヒントだ。
686 :
直リン :03/06/20 23:10 ID:Q1+dqLU8
687 :
nobodyさん :03/06/21 10:55 ID:wNdBDwZ1
質問させていただきます。 1:サムネイル画像の生成を行いたいです。 2:GDを使う方法を試してみたのですが、 3:標準で使える設定にはなっていないようで、エラーになりました。 何か手段はないでしょうか? ・ライブラリを同じとこに置いて使う?? (あまりよくわからないのですが調べててこんな方法があるのかな? と思いました。) ・自分で画像縮小のアルゴリズムを組む。(ちと自信は無いですが) ちなみにjpeg/png/(gif) などで行いたいです。手助けお願いします。
688 :
nobodyさん :03/06/21 12:00 ID:QZ0EDUba
689 :
無料動画直リン :03/06/21 12:10 ID:AstYoKnr
690 :
687 :03/06/21 12:57 ID:wNdBDwZ1
インストール無しで使える画像処理用のモジュール御存知の方居ませんか? (GD,PerlMagickはインストールっぽいので。) jpegだけでも縮小処理をしたいです。(他 gif/png)
>>690 ますますGD入れとけって言いたくなります(w
1.41が旧GDlib使っているんだっけ?(朧)
692 :
687 :03/06/21 15:21 ID:fPD3+uod
インストール無しでGDの機能を利用する方法ってあるのですか?
693 :
nobodyさん :03/06/21 15:22 ID:zsFEWp+J
694 :
603 :03/06/21 16:25 ID:???
>>692 GDのソース見て、インストールなしでも使えるようにモジュール書き替えれ
695 :
687 :03/06/21 16:32 ID:fPD3+uod
やっぱしそれが一番ですかねぇ。必要なところだけで十分なので。 たとえば require "GD"; ってのではやっぱし動かないんですよね? さっきGDの中身を見てたんですが、一部わからない所もありました。 誰か同じことを考えて、インストール無しで使えるGDを公開してる人って 居ないんですかねぇ・・・
696 :
_ :03/06/21 16:42 ID:???
697 :
nobodyさん :03/06/21 17:26 ID:VyXOk/2c
while ($temp = <STDIN>) { chomp($temp); print "$tempが入力されました\n"; } これだとABCDと入力したら ABCDが入力されました、と出て、 while ($temp = <STDIN>) { $temp2 = chomp($temp); print "$temp2が入力されました\n"; } これだとなぜか、1が入力されました、としか出ないのはなぜですか?(´・ω・`) 教えてエロイヒト
>>697 chompの返り値は、切り落とした文字数。
ちなみにPHPのchopの返り値は、処理した後の文字列になる。
>>697 いろいろな本を読んで、またはGoogleで検索して、それでも分からない場合に人に聞きましょう。
chomp()の仕様を答えるのは簡単だけど、そうやって何もかも人に聞くつもりならプログラミングなんて手を出さないほうがいい。
>>698 Perlのchop()も同じ仕様だよ。
というか、なぜそこでPHPが、しかも(関係あるとはいえ)別の関数が出てくるのやら。
700 :
687 :03/06/21 18:11 ID:wNdBDwZ1
701 :
603 :03/06/21 18:12 ID:???
print "Just another Perl hacker\n";
>>698 あり。理解しますた。
>>699 初心者煽るくらいならレスしないでください。役に立たないコテハンは目障り。
うわー、
>>702 みたいなバカがまだいるんだ。
天然記念物クラスのヴァカだな。
>>703 コテハンから名無しに戻って自演ですか?( ´_ゝ`)
705 :
698 :03/06/21 18:36 ID:???
なんだか怒られちゃった(えへ 元質問者がPHPスレに誤爆してたのでPHP+Perl使いと推測。 そして違いを挙げてみた。 それだけなので怒っちゃいやん。
DBIについてちょっと疑問なのですが、 WindowsにMySQLをインストールして使う場合、 DBIとDBD::MySQLか DBIとDBD::ODBC+MySQL ODBC Driverを使いますよね。 問題はDBD::ODBCを使った場合。 $dsn = 'DBI:ODBC:test'; こんな風にデータソースを指定しますが、testっていうデータベース名を 先にODBCドライバにつくる必要がありますよね? でも、ODBCドライバに作成するときには、それと同時に ユーザ名やパスワードも入れるじゃないですか。 つまり、testっていうODBCデータソースには、データベース名と ユーザ名とパスワードがすべて含まれてるってことですよね。 なのに、そのあとそのdsnを使ってDBにつなぐときは、 $dbh = DBI->connect($dsn, 'test', 'test'); という風に、またユーザ名とパスワードを指定する必要があるわけです。 ここが納得できないんですよ。だったらODBCドライバのところでは ユーザ名やパスワードを入れたくないんですが。 今実験してみたところ、やっぱりODBCドライバのユーザ名とパスワードの欄には 何も入れなくても(または適当にいれても)、正常にDBに接続できています。 なんで?
707 :
_ :03/06/21 18:43 ID:???
>>705 chomp();なんかで躓くのが、PHPやってるとは思えんが( ´_ゝ`)
でもまぁ、質問スレに無能なコテは要らんわな。
質問厨がイヤならスレ見なけりゃいいんだから、アフォな煽りなんかすんなっての。
で、
>>702 そのミスの仕方から察するにとほほ見ただろ?(゚∀゚)
あそこだけを信じるなよ。
709 :
674 :03/06/21 19:06 ID:???
>>676 あう、わかります。すみません。。。。。
$ORG{$i} ってなんだよじぶん、、、
CSVファイルに、 print LINE $line "\n"; とかいて、 そのCSVファイルをWIn上で開くと、 Winの改行は\r\nのはずなのに、問題なくみれてしまうのはなんでなんでしょうか?
711 :
直リン :03/06/21 19:10 ID:AstYoKnr
>>710 Winだからというより、開いたアプリによる。
use Fcntl qw(:flock); flock (LOCKF, LOCK_EX); みたいにするのって、 flock(DAT, 1); flock(DAT, 2); flock(DAT, 4); flock(DAT, 8) とただやるのに、比べて、どんな利点があるんでしょうか?;
714 :
710 :03/06/21 20:18 ID:???
>>712 ってことは、MS-Excelは、\nだけでも\r\nと同じようにあつかってくれてるってことですか?
だろな。秀丸は、\nだけでも改行してくれるが、MGエディタは、 ぜーんぶつながっちゃって困った和さ。
use CGI::Carp qw(fatalsToBrowser); とかKcatchとか、 エラーをブラウザに出力してくれるものって、 初心者にはどれがおすすめですか? あと、これって使っても、エラーをとらえきれなくて、 結局生エラーログにしかのってない、っってことも、ありますか? (どーもいろいろためしてみたら、そのように思えるのですが)
717 :
nobodyさん :03/06/21 21:28 ID:aWFirrKr
>>716 サーバー自体のエラーは捕捉出来ない。
(CGI(perl)が返すヘッダーのエラーとか)
perl自体のエラーは詳しく知らんがたぶん100%捕捉できるだろう。
>>713 #define LOCK_UN 8 /* unlock file */
となってるシステムでも正しく動く。
@ORGのm番目からn番目までの要素だけを配列として取り出すには、どうするのがスマートでしょう? for ($i=m;$i<=n;$i++){ push (@tmp_ORG,$ORG[$i-1]); } @ORG = @tmp_ORG; てなもんでしょうか? いや、便利な関数とかあるのかなと思ったもので
>>721 何を問題にしているのかがわかりませんが何か?
>>722 @ORG[m .. n]じゃいかんの?
724 :
nobodyさん :03/06/22 00:54 ID:RPCqHkE2
バックボーンを非公開としているサーバー はヘボイという事でしょうか?
>>716 ヴァカ抜かすな。
KCatchが補足できないエラーはきちんとKCatchのページに書いてある。読め。
あ、もう一つ補足できないエラーがあるな。
お前のねじれた脳味噌から生じた論理エラーだ。
いきなり質問スマソ。 漏れのHPのKENTWEBのチャットを設置してうまく動作したのを確認して 次はスタイルシート埋め込み。 DLしたら分かるけどwtalk2.cgiの200行目付近にHTMLに出力する記述があるからそこに次の一行を追加。 print OUT "<Link Rel=\"stylesheet\" Type=\"text/css\" Href=\"../../lib/memory.css\"><Blockquote><Blockquote><Blockquote><Blockquote>\n" もちろん適当に入れたのでなくてそれらしくHEADタグの中に普通に埋め込み。こっちでは203行目ってことになるな。 で、文法チェッカーでみると、いじった筈のない205行目の print OUT "参加者($num):$member<hr>\n<!--START-->\n"; でエラー。OUTを宣言する必要がありますか?とか言いおる。 かなり分かりにくいと思うので整理。 1.自分はKENTWEBで配布されている「WebTalk」というチャットスクリプトにスタイルシートを埋め込みたい。 2.<Link Rel="~のタグを埋め込む為、wtalk2.cgiの203行目に↑のスクリプトを追加。 3.なぜかエラー。500InternalServerErrorらしい。んで早速文法チェッカー走らせてチェックさせたらいじった筈のない直後の205行目で文法エラー。OUTを宣言する必要がないとかなんとか。 だれか助けて><。
727 :
722 :03/06/22 01:50 ID:???
>>723 そ、そんな書き方あったんですね。。。さすがperl
>>721 ODBCのドライバの設定は必須ではない。必要なパラメータは全部connectストリングに埋め込む事もできる。
>>726 情けなくなるくらいヘボだな。追加した文の文末に「;」が無い。
この位の事でとうとうと泣き言並べ立てて恥ずかしくないか?
729 :
728 :03/06/22 01:55 ID:???
次スレは、シンタックスエラーの質問はお断りにしようぜ。きりが無い。
730 :
nobodyさん :03/06/22 02:08 ID:7kmjTzsL
>>726 (゚Д゚)ポカーン
ネタ・・・だよな?いくらなんでもここまで初心者はないよ・・・な?な?
>>729 それ以前に、エラーすら書かない奴がとにかく多い。
なんとか聞き出してみれば、500エラーとか抜かすし。
エラー書けっつーのはちゃんと
>>1 にも書いてあるんだがなあ。
732 :
nobodyさん :03/06/22 04:03 ID:UMFBhruU
1:画像の転送を(転送量を)軽くしたいです。 2:gzipを使ってみました。 3:どこかのサイトにもあったのですが、既に圧縮されている 画像などに関しては圧縮されないみたいでした。 100kbに対して100b程度減りはしました。 画像の転送量を減らす手段は他にありませんでしょうか?
PerlだけじゃなくてPHPでも同じだったので、何処に書けばいいか分からなかったんですが、こちらに。 CGIで作成したファイルですが、パーミッションを変更(666や777)してもFTPから削除できません…。 スーパーユーザーではないので、所有者の変更をする事も出来ません。 rootで無い限り、どうする事も出来ないんでしょうか? #CGIから削除するしかない?。それともサーバーによるものでしょうか? #ちなみに、ディレクトリの場合は削除する事ができました。
そりゃpermissionじゃない。ownerの問題。よって、 chown ore:ore hoge.cgi して、自分のファイルにしちゃう。
&query_condition(%house)) みたいに、ハッシュ配列を関数に渡したとき、 その引数を関数内で得るにはどうすればいいのでしょうか? 普段ならmy ($foo, $bar, hoge) = @_; とするところの話しです。
>>734 ファイルを削除するにはそのファイルのおかれてるディレクトリに書き込み権があればいい。
>>735 他人のファイルの所有者変更できるのは特権が要るだろうが。ボケッ
>>736 sub query_condition(%)
{
my $h = shift;
$h->{key};
}
query_condition(%house);
739 :
736 :03/06/22 11:53 ID:???
&query_condition($foo,$bar); sub query_condition{ my ($lineid, $staname) = @_; とやったら、 Can't use global @_ in "my" at search.cgi line 370. と言われたのですが、 このエラーメッセージの意図がわかりません。 なんでこんなこといわれなきゃいけないんでしょうか?
>>740 前後を見ないと何とも言えない。
> なんでこんなこといわれなきゃいけないんでしょうか?
間違ってるからだろ。
742 :
740 :03/06/22 12:17 ID:???
>>741 そうですね、すいませんでした。もういちどよくみなおしてみます。
>>740 $lineidか$stanameがグローバルでどこかにあるんじゃないか?
>>737 自分の所有物でも所有者を変えることはできないけど。
そもそも??7なら誰かれ構わず削除出来るっしょ。
746 :
740 :03/06/22 12:37 ID:???
>>743 ビンゴでしたもようです。。。thankxです
>>737 有難うございます。
ディレクトリのパーミッションが775だったのが原因みたいです。
そのディレクトリも、CGIによって作成したものなんですが、
一生懸命0777を与えてるんですが、どうしても777になってくれません(;ω;)#775になってしまう。
ちなみに、その上のディレクトリはFTPから作成したもので、書き込みもOKです。
サーバーの設定で、ディレクトリ作成時に一般の書き込み許可させないって事とかあるのでしょうか…
兎に角、もうちょい頑張ってみます。
>>744 出来るものもある。System-IIIとか。
>>747 CGIでパーミッション変えればいい。
つーかユーザ権限でCGI実行できないヘボイところはとっとと見限ったほうが良い。
>>747 umask関数を調べてみれば解決するでしょう。
750 :
nobodyさん :03/06/22 15:47 ID:wDjVUYGM
$STA[$i]->{lineid} $STA[$i]->{staname} ($iには0から10くらい入ってる) には文字列があてはめられてるのに、 for ($j=0;$j<=$#STA;$j++){ push (@TMPSTALIST,$STA[$j]); } foreach (@TMPSTALIST){ $HTMLStaLine .= $TMPSTALIST[$_]->{staid}."/" .$TMPSTALIST[$_]->{staname}|; } で、何も表示してくれないんですが、なぜなんでしょうか?
751 :
750 :03/06/22 15:47 ID:wDjVUYGM
あ、もちろん、 $HTMLStaLineをprintしてます。
752 :
732 :03/06/22 16:18 ID:qinZbGMm
1:画像の転送を(転送量を)軽くしたいです。 2:gzipを使ってみました。 3:どこかのサイトにもあったのですが、既に圧縮されている 画像などに関しては圧縮されないみたいでした。 100kbに対して100b程度減りはしました。 画像の転送量を減らす手段は他にありませんでしょうか?
>752 Perlのコーディングによる問題ではない。 よってスレ違い。
755 :
603 :03/06/22 16:50 ID:???
>>752 画像のファイル構造自体が圧縮形式というつっこみでいいか?
757 :
752 :03/06/22 17:49 ID:???
>>755 ある意味、望んだ答えでした。ありがとうございます。
myで宣言した変数は、有効範囲を外れると メモリもクリアされるんでしょうか?
>>758 どこからも参照されなくなった時点でクリアされる。
逆に言えば、何かから参照されている限り、スコープを外れてもメモリの内容は残る。
たとえば、以下のようにサブルーチン内でmyした変数のリファレンスを返すということもできる。
$var = hoge();
print $$var; # うんこ
sub hoge {
my $abc = 'うんこ';
return \$abc;
}
760 :
nobodyさん :03/06/22 20:29 ID:S8oOZHOQ
プログラム板から、移動してきました。 複数の検索エンジンに、キーワードを投げて その結果をまとめてから出力というものを書いています。 それで、UNIX上のApacheでcgiを走らせているので `wget $URL`; $html = `w3m -dump_source $URL`; そして、ファイルに$htmlを保存 などを試してみましたが、 wgetの方はURLが長すぎてダウンロード自体に失敗して、 w3mの方は、端末で同じコマンドを打つ分には成功しますが、 実行しても、何もファイルに書き込まれていなくて上手く取得ができません。 どうか、ご教授お願いします。
>>760 perlのコーディングと一体何の関係があるのかと。
763 :
750 :03/06/22 20:50 ID:Rv0SCDPi
どなたかおながいします。このコードだけだと問題ない?
そうですね…perlを使っているので、一気にここ来ちゃいました。 申し訳御座いませんでした。
>>763 foreach (@TMPSTALIST){
$HTMLStaLine .= $_->{lineid} . "/" . $_->{staname};
}
どういう結果が欲しいのかわからんのでこれだけ。
766 :
750 :03/06/22 21:35 ID:a19vkXUc
>>765 長くかくとこんなことしたいんですけどねぇ。。。
#SELECT始まり!
$HTMLStaLine .= qq|<select name="staid" size="10" multiple>\n|;
for ($i=0;$i<=$#GlobalLineidList;$i++){
#沿線名表示!
$HTMLStaLine .= qq|<option value="">----- $LINE[$GlobalLineidList[$i]]->{linename} -----</option>|;
undef @TMPSTALIST;
for ($j=0;$j<=$#STA;$j++){
if ($STA[$j]->{lineid} == $GlobalLineidList[$i]){
push (@TMPSTALIST,$STA[$j]);
}
}
#seqでソート
@TMPSTALIST = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST;
#沿線に属する駅名一覧を表示!
foreach (@TMPSTALIST){
$HTMLStaLine .= qq|<option value="|.$TMPSTALIST[$_]->{staid}.qq|">|.$TMPSTALIST[$_]->{staname}.qq|</option>\n|;
}
}
#SELECT終わり!
$HTMLStaLine .=qq|</select>\n|;
>>766 いや、あのさ、間違ったソースを晒されても「何がしたいのか」は分からないんだが……
>759 丁寧な説明有難うございます。 調子にのてもう一つお聞きしたいのですが、 リファレンスを受け取った側で、undefすると 呼び出し元もクリアされるのでしょうか?^^; $var = hoge(); print $$var; # うんこ undef($var); <- hogeの$abcは要らないのでクリアしたい その後の処理… sub hoge { my $abc = 'うんこ'; return \$abc; } sub { return \%dekai_data; } 大きな値とか返した場合、クリアする必要はあるでしょうか
769 :
750 :03/06/22 23:46 ID:MaT7PvCU
>>767 用は、
$STA[$i]->{lineid}
$STA[$i]->{staname}
($iには0から10くらい入ってる)なのに、
push (@TMPSTALIST,$STA[$j]);
すると、
$STA[$i]->{lineid}
は値が入ってるのに、
$TMPSTALIST[$i]->{lineid}
には値が入ってないのです。
pushした直後でも。。。
770 :
- :03/06/22 23:48 ID:pFJThKfu
771 :
750 :03/06/22 23:53 ID:???
すいません、 @TMP = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST; とやるところを、 @TMPSTALIST; = sort { (${TMPSTALIST[$a]->{seq}} <=> ${TMPSTALIST[$b]->{seq}}) } 0 .. $#TMPSTALIST; とやっていたのが原因でした。 $TMPSTALIST[$i]->{lineid}には値がちゃんと入っていたようです。
772 :
nobodyさん :03/06/23 01:40 ID:8VAV54DK
どうしても解決出来ず、同じ質問を2度することになってしまいました。 どなたかお助けください。 1:Perlからサムネイル(縮小)画像を作りたいです。 2:GDやPerlMagickなどがあることを知り、使おうと考えました。 3:私の使っているサーバにはインストールされていません。 ・インストール無しで使える、画像縮小のモジュール ・画像を縮小するための具体的なアルゴリズム ・インストールが必要なGD,PerlMagickモジュールの改造方法 のような情報を求めています。 (jpeg/png/gifなどについて行いたいです。(1つしか出来なくても構いません)) 色々調べてはいるのですが、GD,PerlMagickのものばかりで 良い情報が見つけることが出来ませんでした。何卒、よろしくお願いします。
>>772 いや、もう無理だって答えでてるでしょ?
自分で作る気がないなら何度質問しても無駄。
むしろ、君がインストールしないで使えるモノを作って公開する方が良い。
774 :
_ :03/06/23 02:09 ID:???
>772
自分はロリポップでIMAGE::MAGICKを使い、デジカメ写真を画面大、
200ピクセルくらい、80ピクセルくらいの3つに一気に縮小している。
その時、ローカルサーバーにIもMAGE::MAGICKをインストールし、
ロリポップが檄重のときはローカルで縮小し、サーバーに上げるルーチンも作ったけど、
その方法も一案では。
ローカルサーバーへのインストールは
http://yassu.no-ip.com/linux/httpd.htm などを参照。
1秒毎に.を出力するプログラムが動きません。 perl -e '$cnt = 100; while($cnt > 0) {sleep 1; print "."; $cnt--;}' どこがいけないのでしょうか。
779 :
nobodyさん :03/06/23 12:20 ID:QgEnyxPf
昨日からPerlに挑戦中の者です。 手始めにPerlで書かれた簡易チャットのソースをコピーして使っています。 微妙にスレの趣旨と違うかもしれませんが、どうか教えて下さい。 チャットの発言内容を書き込んでサブミットボタンを押した時、その内容をcgiファイルに送る。 その後、発言内容のテキストボックスを空にしたいのです。 ジャバスクリプトでサブミットボタンにonClickを付けてファンクションを呼び出し、 そのファンクション内に発言内容のテキストボックスのvalueをnullにする仕様にしたら、 チャットのログ部分に「null」とそのまま出てしまいました。 どなたか解決策をお願いします。
>>778 「動きません」じゃ分からん。
どう動かないのか(エラーが出る、フリーズする、こういう結果がほしいのにこうなってしまう等)を
必ず書くこと。
>>779 微妙にどころか、まるっきりスレ違いというか板違い。
>>780 動かないって言えば分かるだろ、出力がない。
プログラムが終わらない。うんともすんとも言わない。
>>780 ところでちみは、相当の厨だな。フリーズだって(藁
>781 >780ではないが、この初心者スレでは、それ以外の場合でも「動かない」と表現する奴がいる。 というか多い。 それくらいわかるだろ。 バッファリングを止めても変わらないか?
俺も一発でバッファリングのせいだと分かったけど・・・
「動かない」って言ってるんだから、100秒待っても動かないんじゃねーの?(ワラ
Perlで掲示板を作っています スクリプトの最初の方で if ($mode eq 'regist') { ®ist; } elsif ($mode eq 'find') { &find; } : とズラズラ書き並べるのはカッコ悪いのですが 何か恰好良い方法はありませんか?
>>787 カッコワルイって・・・。
サブルーチンを上に書けば?
789 :
787 :03/06/23 16:29 ID:???
すいません言葉が足りませんでした。 use CGI; $q = new CGI; $mode = $q -> param('mode'); とかしますよね。でもサブルーチン使ったとしても どこかに > if ($mode eq 'regist') { ®ist; } > elsif ($mode eq 'find') { &find; } > : みたいのはどこかに絶対あるわけで これがなんとかならないかな とか SWITCH: { if ($mode eq = "regist" ) (®ist;last SWITCH) if ($mode eq = "find" ) (&find;last SWITCH) : } こうやれば多少はましかな‥ でもズラズラ書くのは変わらないので恰好良くないな とか。
ずらずら書いたらダメなのかよっ!
>>789 eq = てなんどい。
Perlにかっこよさを求めるのはおろかな気が。
サブルーチンごとに分けずに、
if($mode eq 'assa'){
処理
処理
}
ってしたら?醜いけど。
>>789 他に方法はあるか?
ハッシュで関数テーブルみたいなものをつくるか?
それでも初期化時にずらずらと書くことになるけど。
>787 こうすると一つで済むよ。 eval(&$mode); このスクリプト(?)の指摘禁止ね :-)
794 :
787 :03/06/23 16:42 ID:???
そうですね。 >Perlにかっこよさを求めるのはおろかな気が。 これが全てですね。 適当に実装しますです。
795 :
nobodyさん :03/06/23 17:20 ID:vdloYxxu
DBMってtieでハッシュに関連付けた時点で、すべて読み込まれて、メモリにはいるんですか?
>>795 はいる。
メモリーキャッシュにまるごと入るからこそ早いとも言える。
>>796 サンクス
200kb位あるのを、丸まま読み込んだらまずいですかね。
CGI利用です。
>>797 やってみろよ
メモリがどれだけ割り当てられているか、残りはどれぐらいかなんて
環境次第なんだから
>>798 ローカルでは問題ないんですが、共有鯖だとどうかな、と。
まぁ、あげてみて試してみます。
同じことをテキスト保存でやったら、ファイルサイズは20㌔くらいなんですが、遅い。
どうしようか・・・。
>>795 かわいそうに、、、、まんまと騙されてるね。
通常、索引編成ファイルのキーや値は、任意でないかぎりメモリに入る事はないよ。
Perlだと、確かにDBMファイルとの接続速度は遅いけど、データは読込んでないから、大丈夫。
796とか798の言ってることは相手にすんな。
>>801 間違いを指摘されたからってそうムキになるなよ。
>>787 Perlでswtich文使えたらいいなー、って思うことしきり。
>>787 リファレンスと配列を使うとか、無名のサブルーチンで、ハッシュを使うとか書き方あると思うけどねィ・・・
んで、カッコいいよりも見やすい記述を心がけるべきだと思ったり・・・
>>803 だね。switchあるだろ、とか思ってリファレンス見直して 無いことに気付いたw
806 :
803 :03/06/24 00:16 ID:???
まあ、switch無くても、 if elsif elsif elsif で処理速度は落ちないんだけど、見た目が、、、
>>808 ちょっと冗長すぎて、それならまだif elseのほうが・・・
swtich使いたいのは、見た目がスッキリするからなので
うーん、その他の方法も見た目が良いとは言えないな
ある変数$Aの先頭2バイトを$Bへ代入し、$Aには先頭2バイトの次からが残る。 単純な質問かもしれませんが、どうか教えてください。キーワードが考え付かず、 ググっても見つけられませんでした。(←力不足っす。。)
>>811 TMTOWTDI.
# substr
($A, $B) = (substr($A, 2), substr($A, 0, 2));
# unpack
($B, $A) = unpack 'A2A*', $A;
# 置換1
$A =~ s/^(..)//;
$B = $1;
# 置換2
$A =~ s/^(..)/($B = $1, '')[1]/e;
# 回りくどい方法
@tmp = split //, $A;
$B = join '', splice @tmp, 0, 2;
$A = join '', @tmp;
s/^(.{2})//; $1; こんなんじゃダメかね、ダメだね。文字だもんね。 あんたのやろうとしてることは、関数で出来るよきっと。 普段そうゆう処理しないから名前は知らんけど。 どっかのサイトの関数一覧をどうぞ。 上の正規表現で十分ならそちらをどうぞ。
814 :
52 :03/06/24 03:37 ID:???
ありがと~~~~~~ # unpack ($B, $A) = unpack 'A2A*', $A; コレ使わせてもらいました。
記憶があいまいだけど、5.?に無かったっけ?<Switch
浮かぶもんだよ。 アルゴリズムを見れば、どの関数を使うべきか直感的に分かるから。 たくさんコードを書いてると自然に身についてくる。
みんな変数名やサブルーチンの名前付けるときってどうしてる? 分かりやすい名前付けた方が後々分かりやすいって聞くけど、 その名前が思い付かないとき…。 漏れコーディングより、名前で時間くう…。 こんな漏れって変でつか…?
>>815 少なくとも 5.8.0 には標準で Switch.pm がある。
use Switch;
switch ($val) {
case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (@array) { print "number in list" }
case /\w+/ { print "pattern" }
case qr/\w+/ { print "pattern" }
case (%hash) { print "entry in hash" }
case (\%hash) { print "entry in hash" }
case (\&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}
>>818 変数名の prefix に規則性持たせてつけてるよ
822 :
818 :03/06/24 08:49 ID:???
>>820 どういうこと?
とりあえず$hensuにしとくってこと?
>>821 漏れもVBやってたときは付けてた。
823 :
nobodyさん :03/06/24 09:26 ID:2JWEavap
CarpのfatalsToBrowserでエラー捕まえられない時があるんだけど、 「500 Internal Server Error」が出てしまう時がある。 httpdのログを見る限りエラーメッセージが出てるんだけど・・・ 回避方法って無いですかね?
825 :
818 :03/06/24 10:44 ID:4jjnB7QK
>>823 いったい何を言ってるんだ?
まともな文章と書くスレを選ぶ方法を先に学べ
でもperlはカウンタとか一時変数とかは名前付けなくていいし、 ネーミングで困ることは少ないな 大抵そういう、どうでもいい変数で困る事が多いし
828 :
nobodyさん :03/06/24 11:11 ID:2JWEavap
>>826 分からないなら、しゃべんなって。
な。
>828 お前はあの文章がわかんのか、とか思ったら本人だったので鬱
CarpとCGI::Carpは違う。
頭おかしい奴が(・∀・)キテルー
ログ見てエラーが出てるんなら、そのエラーメッセージ見て解決策を考えろ。
2JWEavapは恥ずかしくてもう来られない
835 :
nobodyさん :03/06/24 14:10 ID:RsywTEy7
DBI使ってDBを操作するとき、SELECT文の結果は配列で返ってきます。 つまり値を参照するときはフィールド番号(って言うんですか?)で指定しなければいけません。 $record[2]みたく。 できれば、フィールド名で参照したいんですけど、それって無理なんですか? 連想配列みたいになれば言うことないんですが。 $record{'DATE'}って感じに参照したいんですけど、DBIだけでは無理? どの解説サイトみても、「配列でかえります」までしか説明されてませんでした。
BBS作ってるんですけど、例えばレスが800あるスレッドを 表示する時2ちゃんねるみたいに 1&750-800みたいに途中を飛ばして表示するとして ログがレス順1から順に並んで保存されてるとすると 2-749まで空読みして飛ばしますよね? これって無駄に思えますが何か良い方法ありませんか? レスを逆順に800,799・・・保存する方法も考えましたけど これだと表示時に表示するレスの分だけメモリ消費して こちらも無駄かなと思ってしまうんですが。 全レス表示したら全レス分配列必要だし。 前者だとレスが多いスレだとCPU負荷がかかるし 後者だとメモリを多く消費してしまうし、何か他の選択が ないでしょうか?
>>836 1レスの長さを固定してseekとreadを駆使して読み出すのが効率いいんじゃない?
>836 1レス1ファイル形式(w
840 :
nobodyさん :03/06/24 15:07 ID:py7llED6
>>836 1000回の空読み <<<<< ファイルのopen
というか、
1000回の空読み <∞< perlのオーバーヘッド
何をするにもCPU負荷はかかるけど、
定量的に考えないと。
あと、これはバリ私見&経験則だけど、
最近のマシンは一般的なwebサーバー用途で考えると、
バランス的にCPUだけの性能が突出してます。
仮に、1Gメモリー積んでCPUがPIII 1Gぐらいのとき、
先ず、CPUが足りなくなる前にメモリーが足りなくなります。
(これは、webサーバーやRDBMSがメモリー食いすぎというのも理由だが)
なので、CPUとメモリーはトレードオフの関係にあるときは、
メモリー優先で基本的にはOK。
>>838 一度それで作ったことあるけど微妙w
やっぱ1ファイルで空読みかねぇ。
そんなけ書き込み激しいのならば、DB使うだろ・・・
>>836 無駄っちゃ無駄だけど、小細工してもたいして効果ないよ
ハッシュのキーって、全角文字でもいけますか?
>>845 いけるらしいです。
俺は、試してないけど。
でも、あまり推奨されるような物じゃないと思うので、
極力避けましょう。
847 :
nobodyさん :03/06/25 01:18 ID:Ai+C7V0g
質問がございます。 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <TITLE></TITLE> </HEAD> <BODY> <FORM action="test.cgi" method="POST"> %%errmsg%% E-mailアドレスを入力して下さい。<BR> <INPUT size="30" ="text" name="email" value="%%email%%"><BR> 確認のため、再度入力してください。<BR> <INPUT size="30" type="text" name="confirm" value="%%confirm%%"><BR> <BR> <INPUT type="submit" value="送信"></FORM> </BODY> </HTML> これを変数化したものを $html =~ s/\%\%.+?\%\%//gs; このように「%%~%%」を全て取り除くはずなのですが、 なぜか$html =~ s/\%\%.+?\%\%//gsi; でないといきませんでした。%%%%に大文字も小文字も無いとは思いますが、、、 どうしても腑に落ちないため、質問させていただきました。 宜しければどうかご教授ください。宜しくお願いいたします。
849 :
845 :03/06/25 01:30 ID:???
>>846 >>848 thx.
プログラム関係の板の人は怖い人ばかりだと思っていたけど、
ちゃんとレスくれて嬉しいです。ではまた
>>847 $html =~ s/%%.+?%%//g;
で、動かないかい?
それはさておき、%%strings%%で書き換えるHTMLテンプレートをよく見かけるけれども、
鬱陶しくなぁい?
%sにしてsprintfで一気に書き換える方が楽そうに思えるけれども。
それはさておき、正しいHTMLを描きましょう。
<p>で開いたパラグラフは 必ず</p>で閉じましょう
>>850 それじゃ、コード側で順番が固定されてしまうだろ
>>851 </p>は省略可能だけど、それを意識して省略しましょうね。ということでよろ。
>>852 そだよ。そんなに頻繁にテンプレを変えるのは少々難ありだと思うけれども。
>>853 テンプレは変わるだろ。システム変わらずともデザインが変わることは多々ある。
あとDOCTYPEの指定がないのに省略可能と言い切るのはすごいな。
ハ゜ールのcgiをいじっていたら、漢字の「表示」が正しく表示されない のですが、これは文字コート゛の問題なのですか? 普通はどう解決しますか?
>>855 それくらい、とほほにも書いてある。聞く前に調べる。
表\示 これで表示される。Shift-JIS だと「表」のコードが \x95\x5c となる。 \x5c(\) が perl だと特別に解釈される文字なのでおかしくなる
859 :
855 :03/06/25 20:04 ID:???
すいません自己解決しました。
普通はどう解決しますか? ↓ 明らかに突飛な解決策が提示される ↓ 「調べろ」とアドバイス ↓ 同情した奴がマジレス ↓ 自己解決 まったく噛み合ってないな(w
862 :
nobodyさん :03/06/25 20:49 ID:+p8CFadc
test->func(); test::func(); この呼び方で、どちらでも動くようにfunc()をコーティングしたいんだけど、 いい方法知らないすか?
863 :
nobodyさん :03/06/25 21:02 ID:UMoE3ZS2
unicodeの文字列をURLエンコードするにはどうすればいいのでしょうか? JavaScriptのescapeのように、あいうえお<->%u3042%u3044%u3046%u3048%u304A といった感じで変換したいのです。 $value =~ s/(\W)/'%' . unpack 'H2' , $1/eg; とやっただけではムリでした。 どのようすればいいのでしょうか?
ファイルテスト演算子の-Mについてですが、 取得する時間って24*60*60しないとちゃんと取得できないの?
>>861 これで見たの3回目だ。NGワードに入れた
>>862 1.与えられた引数とは全く関係なしに、決まった結果を返す。
2.与えられた第一引数を調べ、それがオブジェクトかそうでないかを判断する。
ref $_[0] でなんとかなるだろ。
>>864 本読め。
-M で取得できるのは、最終更新日からの日数だと明記してある。
秒に変換したいなら、*24*60*60しないとどうしようもないわな。諦めろ。
完全に成功した釣りの例ではあるが、 今一つ爽快感に欠けるのは、-Mについて聞くのが どのくらい愚かなのか実感が無いからだな
>>868 釣られた……
頼むから釣りだけはカンベンしてくれ……
ただでさえ、アレなのが多いのにこんな肩すかしまで食らわされるとな。
872 :
864 :03/06/26 04:34 ID:???
bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka bakabakabakabakabakabakabakabakabakabaka
873 :
nobodyさん :03/06/26 04:35 ID:bmlG3tt5
EUCコードで書いているのですが、なぜか「当」という 文字が文字化けの原因となってしまいます。 具体的には、「当代島」と打つと、「套島」、「当島」と打つと 「島」となってしまいます。 入力フォームも間違えなくEUCなのですが、不明です。 どうかご教授いただけますでしょうか。
\当 びっくり。
>>873 そうなったPerlスクリプトを挙げよ。
あと、漢字コードの変換モジュールあたりも書いとくほうがいい・・・
877 :
nobodyさん :03/06/26 11:55 ID:UmMKROoY
釣られage
また釣り? 当代島 - C5F6 C2E5 C5E7 套島 - C5 E5 C5E7 当島 - C5F6 C5E7 島 - C5 E7 なんか2バイト目と3バイト目が欠けてる気が。
箕島に遊びに行ったことを思い出す
881 :
nobodyさん :03/06/26 15:21 ID:lH1PokLv
携帯向けの投稿用cgiの開発を考えているのですが、写メールは、 受信に添付されたファイルを使えばいいので何となくわかるのですが、 i - shot の場合、メール内のアドレスを解析してそのサイトから 画像を取ってくるようなプログラムはどのようになるのでしょうか?
>>881 簡単にしたいなら/usr/local/bin/wgetとか、use LWP::UserAgentとか。
883 :
873 :03/06/26 16:07 ID:???
本当に皆さんご親切に有難うございます。 ソースを載せますと my (%form, $buffer, @pairs); if ($ENV{'REQUEST_METHOD'} =~ /^post$/i){ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else{ $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$buffer); foreach (@pairs){ my ($key,$value) = split(/=/,$_); $value =~ tr/+/ /; $key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $form{$key} = jcode::convert(\$value,'euc', 'euc','z'); } このようにformで受け取ったものを%formに入れているのですが、 ここで問題の「当代島」の入っている$form{address}を表示させる と例の文字化けが発生してしまいました。 スクリプト内で「当」がきたらエスケープする処理をしてもよいの ですが、もう少し効率的な方法を考えたいと思います。 こんな駄目質問にも応えていただいた皆様には本当に感謝しており ます。
884 :
_ :03/06/26 16:23 ID:???
コードに直で漢字を書く以外で変なことが起きたことが無いので、 jcode:converが怪しい
>>883 >jcode::convert(\$value,'euc', 'euc','z');
3つ目にeucを指定してEUCtoEUCじゃ、実際に変換が行われるのは
zオプションの半角カナ→全角カナ変換だけだろ
jcode::convert(\$value,'euc', '','z'); じゃないのか?
pack("C", hex($1))ってよく見かけるけど、なんでpack("H2", $1)にしないの? なんか理由あるのかね?
>>887 pack("H2", $1)の方が早いけど、そうすると何故か人気が出ないというジンクスがある。
pack("C", hex($1))とpack("H2", $1)はどう違うの?
>887 多分 kent-web とかの配布スクリプトが hex 使ってるから >889 同じ 速度が違う
原因不明の症状に悩んでおります・・・。 申し訳ありませんがご助言をお願いできませんでしょうか。 1: Perlスクリプトで色んなサイトのhtmlソースを一気に取得してきたい。 2: それでこんな風にやってみました。 ※メインのスクリプトにて foreach(@url_list){ # @url_listに各サイトのurlが入っている。 @source = &get($_); (いろいろな処理) } ※サブルーチン(別ファイル)にて sub get{ (socketを使ってソースを取得し、@backに格納) return(@back); } 3: うまくいかないサイトがちらほらあります。 <付加的情報> ・問題なく取得できるサイトも多くある。 ・Hostヘッダは送っている(=バーチャルホストが原因ではない?)。 ・うまくいかないサイトでも、サブルーチン内ではそのソースをprintできる。 (=実は取得できている?) <自分の考え> ・特定のサイトの時だけ、メインのスクリプトに@backが帰って来ない? ・特定のサイトの時だけ、そもそもサブルーチン内で配列に格納されていない?
892 :
891 :03/06/26 17:38 ID:???
これ以上の原因を調べようがなくて八方塞状態です。 足りない情報などあったらすべてお答えしますので、 何とぞよろしくおながいします。<(_ _)>
>>891 ステータスコードは確認している?
# なんかPerlと関係ない話題のような・・・
俺も
>>886 に同意。
HTMLの文字コードがEUCだからって、EUCが送られてくるとは
限らないよ。たまたまIEなんかはそういう実装になってるだけで。
あと、単にブラウザが文字コードを判定ミスしてるってことはない?
Content-Type行を、
print "Content-Type: text/html; charset=EUC-JP\r\n\r\n";
みたいにしてみ。
icab とかは EUC のページでも SJIS で送信するらしいね
>>895 んでそういうのを平気で「ブラウザのバグ」とか言うプログラマが居るんだよな。
逝ってよしだな。
898 :
891 :03/06/26 18:29 ID:???
>>893 ありがとうございます。しかし申し訳ありません。原因は凡ミスでした・・・。
891の「(いろいろな処理)」のほうがマズかったようです。
質問する前にもっとしつこく調べてみるべきでした。本当にすみません。
>>898 おいおい、解決したから満足ですさようならーってのはナシでしょ。
善意とは言え、他人の手を煩わせたんだから、
その凡ミスを晒して他の初心者に貢献するのが
ギブアンドテイクっていうもんじゃないか?
>>899 「この掲示板は自分のためにある」by 891
<FORM accept-charset="euc-jp" ・・・ とか。
>>902 それ、すごく正しいけどIEもNNも実装してなかった気がする。
ちょっと今すぐ試せないけど。
905 :
nobodyさん :03/06/26 20:36 ID:fBG4qVY6
ファイルの読み書きとフォームデータを使う場合の二つの負荷はどっちがお得か教えて下さい。 サーバーの負荷はファイルの読み書き何byteに対してフォームデータ送信何byteと同じぐらいでしょうか?
>>903 そんなブラウザ今すぐ窓から投げ捨てた方がいい気がする。
>>903 今回の件についてはIEやNNなら実装していなくても問題ない。
908 :
nobodyさん :03/06/26 21:12 ID:8elJoZcA
Welcome.......... ホスト12-231-187-185.client.attbi.com 名前: E-mail: 内容: こちらでリロードしてください。 GO! 分からないことがあったら2ちゃんねるガイドへ。。。 プロキシー制限は、2ちゃんねるビューアを使うと回避できることがあります。 ワラタ
>>906 窓も一緒に投げ捨てた方がいい気がする。
910 :
nobodyさん :03/06/26 22:00 ID:0WiiLc+a
2つ(以上)の jpeg 画像ファイルを入力とし、 横に連結した1つの jpeg 画像ファイルを出力するプログラムを書け。 また、指定した位置に連結できるようにもせよ。 どなたか作っていただけませんか?
911 :
nobodyさん :03/06/26 22:07 ID:XYA3PmxJ
自分でコーディングしないのは初心者とは言いません
912 :
nobodyさん :03/06/26 22:07 ID:8elJoZcA
>>910 まじれすすると、モジュール要るし、
貴方にはソレを入れるとか、もしくはソレを使えるサーバーも用意できないと思われる。
もうちっと勉強してきなさい。
915 :
nobodyさん :03/06/26 22:33 ID:8elJoZcA
>>914 >まじれすすると、モジュール要るし、
自分の低レベルをカミングアウトせんでも・・・。
学生のうちに離散コサイン変換位覚えとけ。
>>915 >>914 じゃないけど、俺も面倒だからモジュール使うかなあ。必須だとは思わんけど。
> 学生のうちに離散コサイン変換位覚えとけ。
プログラマで10年飯を食ってるけど、文系なのでそういうの苦手。
>>915 自分で実装するのもなー。
社会人になってからじゃあ、確かに時間がないから、今のうちっちゃ今のうちだが。
918 :
891 :03/06/26 23:08 ID:???
>893,>899 本当にバカですみません。どういう凡ミスかを簡単に申しますと、 htmlソースの<body>から</bocy>までの間だけ切り取ろうとしていた部分で $_ =~ /^<body/i → $_ =~ /<body/i のように直したという感じの話です。 ちなみに実は他にも問題山積みであまり解決していないので >解決したから満足ですさようならー という状況でもなかったりするのですが。
>>915 あふぉか・・・そんな処理入れて使い物になる実行速度でるよ
>>915 何のためにいろいろとモジュールが公開されているのか・・・。
でるのかよ
どっちにしろPerlでは向かない処理やね
(´-`).。oO(やっぱりGD.pmかなぁ、、、)
おお、聞き逃げかと思ったらちゃんと戻ってきた。尊敬。わざわざありがと。 関係ないけど、 > どういう凡ミスかを簡単に申しますと、 と書いた次の瞬間に↓ > </bocy> なんか性格出ててちょっと好感度アップ。
>>923 昔、月の満ち欠けのレンダラーを何を思ったかPerlで書いた事があったが、
恐ろしく遅かったのを覚えてるな。
ただの球体なのに、500x500程度の画像に数分かかってた。
まぁ俺のアルゴリズムが自己流で糞だったのもあるけど。
でもCで書き直したら一瞬で計算できたよ。
WinXPでrenameを使ってみたところ失敗してしまい $!に permission deniedが入っていました。 やったことをまとめるとこの様な感じです ・renameの第二引数には既に存在しているファイルを指定し上書きしたい ・第一、二引数のファイルは共に存在する ・両ファイル共に読み取り専用のチェックは入っていない openでの書き込みやmkdirなどその他のファイルシステム関数は普通に使えます。 Windowsなのでパーミッションは要らないと思っていたのですが この場合どこに原因があるのでしょうか? どうかよろしくお願い致します
>>927 どんなコードでやってるんだ?
問題なくできるし、できないならアクセス権とか確かめてみれ
(・∀・)ボスィー!!
>927 自分も同様な処理で同じエラーが出たが、 アクセス権を考えるのが面倒くさいので、 存在しているrename先ファイルをunlinkした。
すみません。 超初心者な質問です。 if だと何かが真なら…って分岐になりますが、 「これら全てが真なら」とか「全てが偽なら」って記述をスマートに書くにはどのように書くのが一般的なのでしょうか? 頭悪いので if(){ if(){ if(){ } } } こんな記述使ってます。 見にくいです。
>>932 andじゃ駄目なの?
if($a == 1 and $b == 2 and $c == 3){
全てが真の時の処理;
}else{
一個でも違ったら;
}
934 :
932 :03/06/27 11:05 ID:???
ありがとうございます。 頭が悪いのか、andとか、全然使いこなせないんです。汗
>>932 =934
これ、見た目だけの問題じゃなくて、動作速度とかにも影響するから
ちゃんと覚えておいた方がええよ。
936 :
374 :03/06/27 11:22 ID:???
ふーん。そういうことを話し合ってるスレかここは
そうですが、何か?
>>934 お前、高校くらい出てから来い。数学Aの履修範囲だ。
>>939 if文をまとめたぐらいでは体感的な速度差はない。
ただ、日頃から
>>932 のようなコーディングをする人は、自分でも理解できなくなるような
スパゲッティコードを書いたり、非常にパフォーマンスの悪いアルゴリズムを使ったりと
間違った方向に進みがち。
まあ何にせよ、基本はきっちりと押さえとけってこと。
push @houselist, \%HOUSE; したあと、 $houselist[あれこれ]->{id} が重複するものを、 @houselist から取り除く(※)にはどうすればいいのでしょう? ※取り除くというか、1つだけ残したいです。
>>941 こんな感じかのう
@check = ();
@houselist = grep { !$check{$_->{id}}++ } @houselist;
Perlらしいコードだなぁ
>>939 >>934 が言っているように、ほとんど体感は無いけどね。
ただ、漏れは仕事の都合上、xGB単位のファイルの処理とかするんだけど、
そうなってくると、細かいところでかなり違ってくる。
といっても、1時間が55分に短縮されるとか程度だけど。
どっちかってーと、
>>934 の言うとおり、わかりやすく書く、ってことが
重要かと。
xGB単位, xGB単位, xGB単位 ∧∧ ヽ(=゚ω゚)ノ″ ~( ×) (=゚ω゚)ノぃょぅ U U
947 :
nobodyさん :03/06/27 13:42 ID:gWCPnMBP
変数で正規表現を使えるのでしょうか??? sub func{ $str = $_[0]; foreach(@list){ if(/$str/){ $result = $_; } } return $result; } みたいに検索条件を変数にしたい時はどうすれば良いのでしょうか?
948 :
942 :03/06/27 13:42 ID:???
@check = (); じゃなくて、%check = (); だった。スマソ
>947 正規表現じゃなくてindex使え。
951 :
374 :03/06/27 14:01 ID:???
もまいらひまだな print s//uc join('',unpack('A1 x4 A1 x7 A1 x4 A1', <<EOT))/e && $_,"\n"; Just another Perl Hacker EOT
ひまですが、何か?
953 :
nobodyさん :03/06/27 14:24 ID:gWCPnMBP
レスTHX
>>950 全部にマッチしてしまうので、必ず最後の要素番号返してくれます。
>>949 調べてみます。
954 :
947 :03/06/27 14:25 ID:???
>>953 変数を正規表現に使うときは、メタ文字が入っているとうまくいかないから、
quoteする。
metaquote($str)または\Q$str\E
全部にマッチしちゃうってのは、/^$str$/してないから、一部にひっかかって
るんじゃないかな。
956 :
941 :03/06/27 14:38 ID:???
>>942 やばい、何をやっているかわからない。。。
けど理解してがんがってみます。
ありがとうございます。
957 :
947 :03/06/27 14:39 ID:???
>>949 ,
>>950 ,
>>955 >>955 の書き込みを見る前にindexでとりあえずの解決しました。
for($i = 0;$i < @list;$i++){
$idx = index($list[i],$str);
if($idx ne -1){
$result = $i;
}
}
としました
ありがとうございました。
>>955 さんのが原因かと思われるのでそちらも勉強してみます。
感謝です
958 :
950 :03/06/27 14:55 ID:???
「変数に正規表現を」って言うから、引数にメタ文字を入れてるんだと思った…… 要は正規表現を使って(変数に入った)文字列を検索したかったのね。
959 :
947 :03/06/27 15:02 ID:???
CSVからデータを読み込んで、ちょっとした条件でしぼりこんで一覧表示するだけなのに、 一覧のうち1部だけが文字化けするって、 何が考えられますか? なお、スクリプトは、EUC(スクリプト中の処理も全てEUCで処理してます)、 CSVはSJIS、HTML吐き出しもSJISです。 文字化けしてしまってるところは、EUCになっちゃってます。
>>960 文字コード変換を自動判別に頼ってるため、Shift_JIS文字列をEUC
と見間違えるんだと思う。
CSVの1レコードとかテーブル全体を一括で文字コード変換するか、
明示的に変換元と変換先の文字コードを文字コード変換ルーチンに指示
するかすれば問題は起こりにくくなる。
あと、いわゆる半角カナが多いShift_JIS文字列もEUCと誤認識
しやすい(場合によっては区別が付かない)。
条件ってのが、EUCで比較しててそのまま出力に流してしまってるからでは?
>>960 スクリプトとデータの文字コード統一しる。
その方が変換しないで済むから早いだろうに。
>>956 この方法の解説は確かperlメモに書いてあった。
だがしかしperlメモ説明がくどいから逆に分かり難いかも。
でも便利だから一度は見ておけば?
bccに2人を入れたいとき、 メールソフトと同じように、 $bcc = 'amano@alive.ne.jp, mine@alive.ne.jp'; if (!open(OUT,"| $sendmail -t")) { &error('申し訳ありませんが何らかの原因で処理できません.'); } #中略 print OUT "Bcc: $bcc\n"; #後略 で問題ないですよね? 実験だと問題なさそうなんですが、 環境に依存するとなんなんで、一応質問・・・
$sendmail に sendmail のパスが入ってるんだろうけど、 その sendmail が Sendmail とは限らない。 とか言ってみるテスト。 ようはそのプログラム次第ってこと。 Socket使うとかしてみたら? その手のモジュールも転がってるし。
967 :
965 :03/06/27 20:21 ID:???
>>966 いや、sendmailのパス入ってます。
sendmailだったら、他の環境によらず大丈夫ってことですか?
Socketの勉強は、まだ少しペンディングにしてるので。。。
>>967 適当なライブラリ探してきたら、Socket知らないでもできそうですよ。
やったことないですが。
(´-`).。oO(この世にはsocketしか知らない香具師もいるのよねぇ、、、@この板を荒している香具師とか)
(´-`).。oO(本7か…)
sendmail の sendmail と qmail の sendmail で利用可能なオプションとか違うよ。 それ以外のは知らないけど。 つか、スレ違いぎみな気が。
972 :
ふつー :03/06/27 22:05 ID:???
use Net::DNS; use Net::SMTP;
すんごい素朴な疑問なんですが、 なぜみんなヒアドキュメントを使うんでしょう? print << "END_OF_HTML"; ほげ ふが ひげ END_OF_HTML っていう風に、最後を、インデントつけれないから、すごくコードがみづらくなって、 個人的にはいやなんですけど。 (なんかのオライリー本にもそんなことかいてあったきがする) やっぱり、END_OF_HTMLみたいに意味をかけるからいいんでしょうか? ちなみに自分は、ほとんど print qq| ふが ほげ |; ってやってます。
974 :
965 :03/06/27 22:36 ID:???
やばい、qmailとsendmailてまったく別物だと思ってました。
(だから、
>>971 でqmail の sendmail ってなんだ?と思った)
スレ違いぎみなので、逝って勉強してきます。
>>973 print << " END_OF_HTML";
ほげ
ふが
ひげ
END_OF_HTML
977 :
973 :03/06/27 23:25 ID:???
978 :
973 :03/06/27 23:26 ID:???
>>976 そ、それも、気持ち悪くないですか?個人差かな?
まあ、あまり深いインデントにならないコードを書いて気休めにするしかないな
まぁ、個人の好き嫌いじゃないの? ' hoge '; << 'HOGE'; hoge HOGE ちなみに私は前者が多いかな。 インデントがと言うか、楽だから。
>977 クックブック
>>977 オライリーのPerl本を色々物色してれば分かる。
983 :
982 :03/06/27 23:43 ID:???
かぶった
次スレまだー?
Perl 初心者コーディングコーナー Part25 なんてどお?
いいね。たてとけ。
ミンキーモモに出てくる
普通なら Perlコーディング 初心者コーナー Part25 じゃないのか?
CGI以外 Perl初心者コーナー Part25
せめてCGIを除外する旨のことはテンプレに書いてほしい。
別にcgiであっても構わないけど、perlに関係ない話はスレ違い
CGI以外ならむしろム板だろ。
WebProg 板なのになんでCGIダメなんだ
s/WebProg板/過疎板/;
997
998
999?
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。