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
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
0403nobodyさん
03/06/16 01:49ID: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”だけがマッチするようにするには
どうしたら良いでしょうか?
0405nobodyさん
03/06/16 02:35ID: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フォームに入力された内容を取得しているのですが、
存在するファイル名を指定すれば、正常にファイルの入力は行われます。
以上、説明の不備等あるかもしれないのですが、よろしくお願いします。
0407nobodyさん
03/06/16 03:22ID:X/Zl1g96バッファをクリアするにはどうすればいいのでしょうか?
0408nobodyさん
03/06/16 03:29ID:???レス有難うございます。
> sub Errorのほうではちゃんとヘッダとか出力してますか?
&Errorって、dieの代わりに使う…ってモノじゃ無いんですね…
どうも的違いの事をやってしまっているようですね。
もう少し勉強してから質問するようにします。
なんにせよ、解決に向かって一歩進んだような気がします。(気のせい?)
本当に有難うございました!
0409405
03/06/16 03:40ID:???下記のようにすることで、無事にエラーページに飛ぶ事が出来ました。
open(FILE, "$fname1") or &Error;
sub Error{
print "Location:エラーページのURL\n\n";
}
>>406さんにヒントをもらえたおかげです。有難うございました!
また、板汚し失礼いたしました。
0410nobodyさん
03/06/16 03:45ID:???これでどうだ?
文字化けしそうな時は、スペース1個入れてごまかしてみた。
$content =~ s|(?<=[\x81-\x9f\xe0-\xef][\x40-\x7f])([\w\.\-]+@[\w\.\-]+)| $1|g;
$content =~ s|([\w\.\-]+@[\w\.\-]+)|<a href="mailto:$1">$1</a>|g;
0411nobodyさん
03/06/16 04:06ID:???ごめん。間違い。
↓こうしないと失敗するかも。
$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;
0412_
03/06/16 04:23ID:???0413nobodyさん
03/06/16 08:18ID:???Cとかjavaとか、Linux、word、一太郎などまであるわけですが、perlはなぜか
聞かない。
0414nobodyさん
03/06/16 08:44ID:???2003年6月16日(月)8:44
という文字列から
「6月16日(月)」と「8:44」
を取り出すにはどうしたらよいか教えていただけませんか?
よろしくお願いします。
0415nobodyさん
03/06/16 09:06ID:???$hiduke='2003年6月16日(月)8:44';
@hiduke=$hiduke=~m/(\d+月\d+日\(.+?\))(\d+:\d+)/;
print "@hiduke";
0416nobodyさん
03/06/16 10:42ID:QXmqryyphttp://www.dtek.chalmers.se/groups/icfpcontest/
これで優勝すると「無制限に自慢する権利」を得ることが出来ます。
http://slashdot.jp/developers/03/06/13/1610225.shtml?topic=58
0417nobodyさん
03/06/16 10:52ID:01UxcTvVエディタで見るとちゃんと改行されて見れますが
log.dat内でも改行される様に
するのはどすればいいのでしょうか
すんません。初歩的質問で
よきお知恵を
例えばこんなのです
$log = $ENV{'HTTP_REFERER'};
open(LOG, ">>./log.dat");
print LOG "$log\n";
close(LOG);
0418nobodyさん
03/06/16 11:04ID:???意味不明。
log.dat内でも見られるってどういう意味?
改行っつったら、文字コードの話か、<br>の話か。
ともかく落ち着いてわかりやすく説明してくれ。
0419nobodyさん
03/06/16 11:38ID:01UxcTvVすんません。ちょっと落ち着いてみます。
えーと
FTPとかでlog.datを落としてメモ帳で見る、もしくは
その場でメモ帳とかで開くとlog.datがバイナリなので
改行されず見難いです。
まあ普通にエディタ使えばいいじゃんと
言われればそうなんだけど
出来ないのかなぁ と
うぐ、なんか説明へただぽ
0420nobodyさん
03/06/16 11:41ID:???激しくスレ違いだな。
改行コードの問題だ。
素直にエディタ使え。
0421nobodyさん
03/06/16 11:43ID:???うむ、たしかにちとスレ違い。
まあ、どうしてもメモ帳が使いたいなら、SJISにして書き込むなり
なんなりしたまい。
果てしなく意味のない行為だとは思うが…。
0422nobodyさん
03/06/16 11:51ID:???バイナリ?だって、そこが勘違いの元じゃないかな。
HTTP_REFERRERは、飛んでくる前のページだから、普通のテキスト
ファイルのはず。改行コードがLFだけだとしても、windows PCだと
行がつながらないはず。Macだと?逆に、CRだけだと、windows PC
で見ると行がつながる。とっちか確かめて、
s/\r/\r\n/とか、s/\n/\r\n/とかすりゃいいんじゃ?
0423nobodyさん
03/06/16 11:53ID:???たくさんあるファイルの1行目だけ表示したいんですが、
perl -ne 'print if $. == 1;'
だと1つのファイルだけしか処理できないんで困ってます。
よろしくおながいします。
0425nobodyさん
03/06/16 11:57ID:AbGOHEQTすみません、普通にGETとはどういうことでしょうか…?
それが分からなくて困ってます。
0428nobodyさん
03/06/16 12:07ID:???http://www.google.com/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&safe=off&c2coff=1&q=perl+http+get&lr=lang_ja
0430nobodyさん
03/06/16 12:18ID:8IGausxnありがとうございます
0433nobodyさん
03/06/16 13:34ID:???$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 の時は 真
こっちでしょうか? よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています