Perl 初心者コーナー Part24
■ このスレッドは過去ログ倉庫に格納されています
0001 ◆fBgbHI04bQ
03/06/07 22:30ID:GbQKLcPE【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/
過去ログやお勧めサイトは >>2-10
0302nobodyさん
03/06/13 18:27ID:???保険として残ってたら削除ってことで。
ちなみにclose()をevalで囲っておかないと添付ファイルがない場合
特定のPerlのVerではエラーするよ
0303nobodyさん
03/06/13 18:29ID:???Linuxだが、
man: ??????????????????????
Failed to open the message catalog man on the path NLSPATH=<none>
No manual entry for CGI
0304299,293
03/06/13 18:31ID:???>>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);しないと消えないんだよな・・・
0306nobodyさん
03/06/13 19:35ID:???わからないのですが。わかる方います?
0307nobodyさん
03/06/13 19:36ID:???0309nobodyさん
03/06/13 19:45ID:???#そのまま・・・
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)
0310nobodyさん
03/06/13 20:24ID:???いまさら言うのもアレだが、2chみたいにPATH_INFOを使って
hoge.cgi/fuga.jpgのようにすれば、IEなどを騙せ・・・たと思うけども。
0311188
03/06/13 21:06ID:???で、glob使わないで、
unlink(<tmp*>);と同じことする方法ってないですか?
0313nobodyさん
03/06/13 21:29ID:???普通に考えて、配列にはforeachが最速なんじゃないの?
$max = $array[0];
foreach my $array (@array) {
$max < $array and $max = $array;
}
0314nobodyさん
03/06/13 21:29ID:???0315nobodyさん
03/06/13 21:37ID:???$path = ".";
opendir(DIR, $path) or die;
unlink grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
closedir(DIR);
0317315
03/06/13 22:02ID:???書いてから気が付いた。ごめん、適当に修正してくれ。
0318315
03/06/13 22:10ID:???unlink map { "$path/$_" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
0319nobodyさん
03/06/13 22:14ID:???0324nobodyさん
03/06/13 22:35ID:???2ch互換のBBSを作るくらいしかメリットは無いかな
0327nobodyさん
03/06/13 22:52ID:???0328nobodyさん
03/06/13 22:58ID:???トリッパーで十分だ、
ノシ
0329nobodyさん
03/06/13 23:11ID:???0330nobodyさん
03/06/13 23:11ID:???0331nobodyさん
03/06/13 23:12ID:???→→→
0332nobodyさん
03/06/13 23:15ID:???0333329
03/06/13 23:27ID:???0335311
03/06/14 00:24ID:???丁寧にありがとうございます。
で、
$path = "../image/photo";
opendir(DIR, $path) or die;
unlink map { "$path/$_" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
closedir(DIR);
とやったのですが、結果を見ると、消えてないんですよね・・・
なんでなんでしょう?スクリプトも間違いがあるとは思えないし、
別にcgi自体は正常に終了してるしからエラーログも見れないし、
$path のディレクトリも存在してるし・・・
いったい何が原因なんでしょうか?
恐縮ですがもう少しおつきあいねがえれば幸いです。
0337nobodyさん
03/06/14 00:28ID:EElS1+7WでもCGIの設置くらいしかしたことありません。
1から勉強しようと思います
で、参考書籍のスレに行ったんですがなんか微妙なので
こっちで手っ取り早く教えてください
ソースはメモ帳で書けるんですよね?
お勧めの本おしえてください。
プログラムはやったことないに等しいです
(HTMLはある程度書けます。それとHSPくらいなら・・・)
宜しくお願いします
0338nobodyさん
03/06/14 00:30ID:???・print map { "[$path/$_]" } grep { /^tmp.*/ and -f "$path/$_" } readdir(DIR);
等としてみて本当に拾えているか確かめる。
・unlink 後に print $!; してみる。
unlinkの後に$!を見てみる。
空ならunlinkは成功しているよ。
…というか、CGIスクリプトなのか。共用サーバでは実験しないでね。
CGIスクリプトは、途中でdieしても、HTTPヘッダさえ出力してあれば問題ないように見えることもあるから、注意してね。
0341nobodyさん
03/06/14 00:38ID:???いいんだよ。それ正規表現だから。
>>337
ソースはメモ帳でOK。ただ扱えるサイズに制限があったような?
フリーのテキストエディタを使うといいよ。プログラミングに便利な機能がたくさんある。
0342337
03/06/14 01:25ID:EElS1+7WHTML書くとき使ってるエディタ使うことにします
本はどうしようかな…
やはり見てから決めたほうがいいかな。
0344nobodyさん
03/06/14 05:08ID:CEUIIJh6VBAならできるかもしれないけど。
0346nobodyさん
03/06/14 07:32ID:FbHmkvIrhttp://homepage3.nifty.com/coco-nut/
0348nobodyさん
03/06/14 13:13ID:???0349nobodyさん
03/06/14 15:23ID:???sub sub{
}
と
sub sub($){
}
にはどういう違いがあるんですか?
0352nobodyさん
03/06/14 22:33ID:???プロンプトみたいに、撃つ回数
平均時間、最短時間、最長時間
を得ることができますか?
リファレンスみると、生きてるか死んでるか、しかわからないみたいなので・・・
アクセスログのファイルのファイルハンドルをFとすると
@line=<F>;
のようにするのは、よくないとどこかで見たのですが
ファイルサイズが小さい場合でも駄目なのでしょうか?
もしよかったとして、どれくらいのサイズまでなら大丈夫なのでしょうか?
もし過去ログにあるのならば、どのあたりの過去ログにあるかを教えて欲しいです。
よろしくお願いします。
0355nobodyさん
03/06/14 23:03ID:???小さきゃかまわないよ。
どのくらいのサイズまで大丈夫かなんて、環境によって違うので分からない。
「みんなはどれぐらいで線引きしてるか」の答えなら得られるかもしれない。
>>356
レスありがとうございます。
なるほど、確かに環境によってかわりますよね。
では、どのくらいの大きさで区別をなさってるのでしょうか?
私は30〜50k程度のファイルでする予定です。
0359nobodyさん
03/06/14 23:33ID:???0360nobodyさん
03/06/14 23:33ID:???なんで差が出るかの理由を考えろ。
その方が早い。
0361nobodyさん
03/06/14 23:35ID:???かなり小データ以外は一行筒読んでます。
0362nobodyさん
03/06/14 23:36ID:MAEKWf+y[an error occurred while processing this directive]
というエラー文が.sthmlファイルの中に出てくるんですが、
この文章を自由な文面に変更したり出来るんでしょうか?
0363nobodyさん
03/06/14 23:42ID:???ソートするとか、順序を入れ替えるとかしたいなら、一括で
またまたレスありがとうございます。
>>359
なるほど、1行ずつのほうがいいですか。
変更はすぐできるのですが、15〜20kくらいのファイルでもだめでしょうか?
>>360
1行に記録するデータの項目がある場合と無い場合があるからです。
例えていったら、掲示板で名前だけ書く人と、名前もメアドも両方書く人がいる、みたいな。
0365nobodyさん
03/06/15 00:01ID:???大きさだけじゃない。
例えば、速攻で作らなきゃならない、使い捨てのスクリプトを占有サーバで実行するなら
数十MBでもやるかもしれない。
レスどうもです。
有料ですがレンタル鯖なので他の人に迷惑がかからないように
1行ずつ処理した方がよさそうですね。
ありがとうございました。
0367nobodyさん
03/06/15 02:55ID:???0369nobodyさん
03/06/15 04:19ID:???プロセス番号($$)のファイル名を作成させて管理する形式でユニークに
しようかと思っております。
プロセス番号で管理すれば、完全にユニークになると考えて宜しいのでしょ
うか。
まだまだ初心者のため、自信がありません。
どうか教えていただければありがたいです。
0371nobodyさん
03/06/15 05:34ID:???FFFTPで表示されてる、サーバーにあるディレクトリの作成日時と
(stat("dir"))[9] 使って取得した日時(unixtime)が一致してない・・・・・
なぜだろう
0372nobodyさん
03/06/15 06:24ID:m8nOAT8Lでしょうか。どうもうまくいきません。
0374nobodyさん
03/06/15 10:52ID:???$hoge = "test";
&$hoge;
sub test{
}
0375nobodyさん
03/06/15 17:55ID:fAURPzIq機能してませんよね。以下↓
http://www.keddy.net/~gekiya77/ore_plus_v02-04-16/
原因が分かるのならば、教えて下さいませ。
0380nobodyさん
03/06/15 19:32ID:???パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
パーミッションがないパーミッションがないパーミッションがないパーミッションがないパーミッションがない
0382nobodyさん
03/06/15 19:48ID:???0383nobodyさん
03/06/15 20:01ID:???0385nobodyさん
03/06/15 20:27ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
煽りや荒らしは放置で
次の方どうぞ。
0386nobodyさん
03/06/15 20:36ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
煽りや荒らしは放置で
次の方どうぞ。
0387nobodyさん
03/06/15 20:49ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
煽りや荒らしは放置で
次の方どうぞ。
0388nobodyさん
03/06/15 20:50ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
煽りや荒らしは放置で
次の方どうぞ。
0389nobodyさん
03/06/15 21:03ID:m8nOAT8Lご返答有難うございます。
やりたいことは>>374さんのようなことなのですが、
このように実行すると、
Bad name after main:: at -.cgi
と出てしまいます。
use strictをはずせば回避はできるのですが、
いろいろと試してみたいと思います。
ご親切に有難うございました。
0390nobodyさん
03/06/15 21:04ID:QzYzFnUNhttp://www1.free-city.net/home/s-rf9/page004.html
http://www1.free-city.net/home/s-rf9/page005.html
0391nobodyさん
03/06/15 21:20ID:???%funcs = (
hoge => sub {return 1},
hage => sub {return 0}
);
$name = 'hage';
print $funcs{$name}->(), "\n";
0393nobodyさん
03/06/15 22:17ID:???出てしまいます。strictはずせばいけるのですが、、、
先生方、もしお分かりでしたら教えてください、、、
0394nobodyさん
03/06/15 22:43ID:???それはソフトリファレンスだからではないか?
変数の部分は文字列が入っている?
回避方法としては、
1.プログラムの構成を考え直す(ソフト・リファレンスを使わない)
2.no strict;を直前に入れる。
3.eval を使う。
などが考えられる。
0395nobodyさん
03/06/15 22:45ID:???>>1
>【投稿する際の注意】
>質問するときは内容をよく吟味してから投稿してください。
>
>1:自分はこう言う事がしたい。
>2:それでこんな風にやってみたが・・・
>3:それだとこんなエラーが出て上手く行かなかった。
>
>最低でも1と3が無いと誰も答えられないよ。
0396nobodyさん
03/06/15 22:48ID:???そのとおりでございます。
変数の部分には文字列がはいっております。
リファレンスから勉強しなきゃ駄目ですね。
本当にご親切に有難うございました。
0397nobodyさん
03/06/16 00:08ID:CSJJat6/もし可能でしたらやり方を教えてほしいです。
0399nobodyさん
03/06/16 00:35ID:???755で作成されてしまいました。
ラクダ本を読んでみたところ
>数値MODEで指定したパーミッション(を現在のumask値で修飾したもの)を持つ
とあるのですが、umaskで修飾とはどういうことなのでしょうか?
原因の分かるかたがいらっしゃいmしたらよろしくお願い致します。
以下の様にやっています
mkdir( './dir', 0777 ) or die( "ディレクトリを作成できません\n" );
0400nobodyさん
03/06/16 00:56ID:???print umask; # 現在値
my $umask = umask 0; # umask を 0 にし、前の値を退避
mkdir ...
umask $umask; # 元に戻す
see also: http://www.google.co.jp/search?q=umask&hl=ja&lr=lang_ja
■ このスレッドは過去ログ倉庫に格納されています