【Perl】初心者コーナー Part13
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/05/30 13:06ID:R2kt1mTx1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
CGIの質問は【CGIだけど、なんか質問ある? part 6】
http://pc.2ch.net/test/read.cgi/php/1019561283/
参考書籍の話題は【【Perl,CGI】参考書籍 第2版】
http://pc.2ch.net/test/read.cgi/php/988809842/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
スクリプトの改造依頼は 【スクリプト改造工房 Part4】
http://pc.2ch.net/test/read.cgi/php/1012839651/
過去ログ、その他の役立ち情報は>>2-10あたりを見よう。
0422412
02/06/26 18:50ID:1ADBKX331行目を#!/usr/bin/perl -T にするって事でしょうか?
unixコマンドを打てる、というバグを発生させないためにはどうすれば
どんな点に注意すればいいんでしょう?
バグというか、何も対策してないcgiだとアドレスのcgi-bin/xx.cgi?の後ろに
いろいろへんなのを入力するとunixコマンドを打てるとかいうバグがある話を
聞いたんですが。
0425fusianasan
02/06/26 19:28ID:???要は、ブラウザ側で入力された値をチェックしないでそのまま以下のような
関数に渡さなければいいだけ。
open
exec
system
qx//
eval
``
0426nobodyさん
02/06/26 19:47ID:CyvQGqzW0427nobodyさん
02/06/26 20:55ID:???そのほか、クロスサイトスクリプティングにも注意。
たとえば、User-agentを内容をチェックせずにそのまま出力しちゃだめ。
ttp://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
0428nobodyさん
02/06/26 23:02ID:???0429nobodyさん
02/06/26 23:13ID:???それがバグだったら世界中のPerlUserが嘆くことになるな。
0430nobodyさん
02/06/27 01:16ID:riwIozkn$a = '&xyzあいうえお<A href="http://www.xxx.com">リンク</A>';
$a =~ s/&[^lt;|^gt;]/&/g;
こんな感じで文字列の < と > 以外の & を & に置換したいのですが、
上のようにすると & の次の文字(ここでは x)が消えてしまいます。
どうすれば &xyz とすることができるでしょうか?
0431429
02/06/27 01:19ID:riwIozkn$a = '&xyzあいうえお&<A href="http://www.xxx.com"&>リンク&</A&>';
こんな感じで文字列の &< と &> 以外の & を & に置換したいのですが、
上のようにすると & の次の文字(ここでは x)が消えてしまいます。
どうすれば &xyz とすることができるでしょうか?
0432nobodyさん
02/06/27 01:19ID:???0433nobodyさん
02/06/27 01:21ID:???0435nobodyさん
02/06/27 10:09ID:???それって違うと思うけど・・・
$a =~ s/&(?!=lt;|gt;)/&/g;
じゃないの?[]で囲んだらcharacter classになっちゃうじゃん。
432の正規表現では&のあとの文字がg,l,t,;,|,^だったら&
に変換されないぞ(例:&lz; &gxcv; &;;; )
0436nobodyさん
02/06/27 10:15ID:???s/&(?!lt;|gt;)/&/g;
0437nobodyさん
02/06/27 10:16ID:???0439nobodyさん
02/06/27 17:36ID:???ひどいサイトがあります。思いきってサイト(HDD)をクラッシュさせたいのですが、
何かいい方法はあるのでしょうか?
こちらのIPとか所在がわからないようにしたいのです。
こう言う質問にお答えとなると問題がある場合、こういった専門サイトとかがあれば
お教え頂けないでしょうか。
0440nobodyさん
02/06/27 17:43ID:???ひ
何
こ
こ
お
???
縦読みじゃないのか
0441nobodyさん
02/06/27 17:58ID:???俺はここの一流ハッカーに頼んでHDDを爆発させてもらったよ
http://www.qudsway.com/Links/Doctor/4/Html_Doctor4/4hdo9.htm
0442nobodyさん
02/06/27 19:54ID:???「出力時の数値形式」ということまでは分かったのですが...。
0443nobodyさん
02/06/27 20:11ID:???-wスイッチの元で警告されるように、$#の使用はお勧めできない。
Cレベルでの内部操作だから簡単にDLLエラー(Unixだとコア吐くのかな?)を出せるしな。
それでも使いたければ:
$# = '%.3g';
print 8/9;
0444trrh
02/06/27 23:55ID:mvLF/G5v$file1++;
}
close(file1);
while (<file2>){
$file2++;
}
close(file2);
while (<file3>){
$file3++;
}
close(file3);
while (<file4>){
$file4++;
}
close(file4);
上記のソースを短く出来ませんか?
0445nobodyさん
02/06/28 00:03ID:???ネタはこちらへ。
http://pc.2ch.net/test/read.cgi/php/1024741312/
0446nobodyさん
02/06/28 00:26ID:???マルチ
http://pc.2ch.net/test/read.cgi/tech/1017736187/n186-
0447nobodyさん
02/06/28 17:06ID:???$paturn = '787+8787';
quotemeta $paturn;
if ($mes =~ /$paturn/){
print "Match!\n";
} else {
print "Oops!\n";
}
これだとマッチしないのですが、どうすればエスケープ出来るでしょうか
quotemetaの使い方を間違えてんのかなあ・・
0448nobodyさん
02/06/28 17:09ID:???\Q\E だた・・
perlは忘れ易いよ
0449japh ◆J.5V8ta6
02/06/28 20:48ID:???quotemeta()の使い方間違えてるよ。
$quoted = quotemeta $string;
chop(), chomp()等と違って元の文字列は置き換えないからね。
0451nobodyさん
02/06/28 22:43ID:ZifxuKsx@mon = split(/,/,$mon);
$mon{$mon[1]}++;
}
3行目では何が起こっているのでしょうか?
0452&r
02/06/28 22:51ID:???取得しているといったところでしょうか。
0454nobodyさん
02/06/29 00:03ID:kfva2Nvgppmでsearchを実行しても全く反応がないのです・・・
PPM> search
PPM>
のように、なってしまうのです・・・DBIをインストールしたいがために四苦八苦しているのですが、
どうしても上手いこと行きません・・・もちろんdbi.zipを直接DLして
ppm install dbi.ppd
等も試してみましたが
Could not locate a PPM binary of 'dbi.ppd' for this platform
とエラーが出てしまいます(涙
どうにか対処法を教えて貰えないでしょうか・・?
環境はwin2k perl-v5.6.0 for MSWin32-x86-multi-thred ppm(2.1.2)です
0456こここ
02/06/29 02:20ID:8vz7q6tH説明の通りに設置して、チェックモードでもOKとでたんだけど
Authorization Required
This server could not verify that you are authorized to access
the document you requested. Either you supplied the wrong creden
tials (e.g., bad password), or your browser doesn't understand
how to supply the credentials required.
ってでる。
何が悪いのかわかります?
0457nobodyさん
02/06/29 02:24ID:kfva2Nvgダメです・・・
Installing package 'DBI'...
Error installing package 'DBI':Could not locate a PPD file for package DBI
となります・・・
ネットは常時接続なので、当然繋がったまま実行しているのですが・・・
(。´Д⊂)゜。・ こまった
0459こここ
02/06/29 02:28ID:8vz7q6tHそうです
0463補足
02/06/29 02:52ID:???> PPM doesn't work through a proxy/firewall.
> This can be remedied by setting the environment variable 'HTTP_proxy' to the name and port of your Internet proxy, e.g.:
> C:\> set HTTP_proxy=http://proxy:8080
> If your proxy or firewall requires a username and password, you will also need to set the environment variables 'HTTP_proxy_user' and 'HTTP_proxy_pass'.
多分これね
0464こここ
02/06/29 02:52ID:8vz7q6tH本当だ。
今まであると思ってたIDとパスがなかった・・・
とにかく今やったら出来た。
nobodyさんありがとう!!!
0465nobodyさん
02/06/29 03:21ID:???0466nobodyさん
02/06/29 07:00ID:???∧∧
|\ <ヽ`∀´> /|
ヾ  ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
 ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |
/ ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄ ̄\
__/ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ .\__ ドドン!!
___<__)__________ (__>___
0467nobodyさん
02/06/29 12:54ID:xVhrnBTOこいつらの属性を変えてやれば処理を軽くすることはできますか?
初心者なもんで質問が意味不明かもしれません…(汗)
0468&r
02/06/29 12:57ID:???ほんとに意味不明だからびっくりしたYO!
0469あSD
02/06/29 13:16ID:IbvPgwu50471nobodyさん
02/06/29 16:51ID:???初歩的な事で申し訳ございません。
name1<>host1<>ip1<>111<>
name2<>host2<>ip2<>222<>
name3<>host3<>ip3<>220<>
name2<>host2<>ip2<>200<>
name2<>host2<>ip2<>222<>
name3<>host3<>ip3<>220<>
とログファイルに保存をしてありまして、
それぞれの一番右の数の合計を出すにはどうすれば宜しいのでしょうか?
0472nobodyさん
02/06/29 17:01ID:???0474nobodyさん
02/06/29 17:05ID:???>451が参考になるよ。
あれをちょっといじればいい。
0475&r
02/06/29 17:07ID:???こんな感じでしょうか?
$sum+= (split(/<>/))[$[+3] for <DATA>;
__DATA__
name1<>host1<>ip1<>111<>
name2<>host2<>ip2<>222<>
name3<>host3<>ip3<>220<>
name2<>host2<>ip2<>200<>
name2<>host2<>ip2<>222<>
name3<>host3<>ip3<>220<>
0476471
02/06/29 17:25ID:???それは、その感じでまる2日ぐらい悩んだんですが出来ませんでした。
>>475
今、試してみましたが一番右の数の全部の合計した数が出てきました。
0477nobodyさん
02/06/29 17:36ID:???> 1:自分はこう言う事がしたい。
> 2:それでこんな風にやってみたが・・・
> 3:それだとこんなエラーが出て上手く行かなかった。
>
> 1と3が無いと誰も答えられないよ。
> 良い回答は良い質問から。一緒に勉強しましょう。
1はあるけど2と3がないな。
0478nobodyさん
02/06/29 17:39ID:???while(<IN>) {
@host = split(/<>/,$_);
$host{$host[0]} += $host[3];
}
かな?
0480&r
02/06/29 17:52ID:???そうだね。うっかりホスト毎ってのを見逃してた。修行してくる。
0481471
02/06/29 17:55ID:???んーと別に大丈夫ですよ。質問の仕方が悪いのは僕の方です。
>>477
今まで答えて頂けたことは全て一通りやってます。
エラーは出ませんでした。出たとしても;を:と間違えた等その位です。
0484&r
02/06/29 18:04ID:???ハッシュの参照のしかたわかる?
ファイルハンドルが478ではINになっているから統一しているか確認して、
とりあえず以下のようにして出力して確認されない?
for ( keys %host ){
print $_,': ',$host{$_},"\n";
}
0485471
02/06/29 18:04ID:???Thanks!!!!!!!!!!!!!!!!!!!!!!!!
黄金帽と呼んでくれ!!!
0486nobodyさん
02/06/29 18:06ID:???@host2 = grep { /^name1<>.*<>.*<>.*<>/ } @_;
@host3 = grep { /^name1<>.*<>.*<>.*<>/ } @_;
foreach(@host1){
m/^name1<>.*<>.*<>(.*)<>/;
$count1 += $1;
}
これじゃ非現実的だな。スマソ
0488nobodyさん
02/06/29 20:03ID:A6ruKh9Phttp://tmp.2ch.net/test/read.cgi/mog2/1022943102/l50
0489nobodyさん
02/06/29 20:32ID:YfnrInm/0491nobodyさん
02/06/29 20:47ID:???>46 :デフォルトの名無しさん :02/06/29 19:00
>>>1よ
>だいたいPerl関連はWebProg板でやるきまりなんだよ
>そっちへ逝け
0492nobodyさん
02/06/29 21:30ID:???じゃ490はマルチした罰として↓の48に答えること。命令。
http://pc.2ch.net/test/read.cgi/php/997829243/n48-
0493490
02/06/29 21:37ID:???0495nobodyさん
02/06/30 06:36ID:???・ファイルが存在しない
・パーミッションがおかしい
以外にありえるのでしょうか、おねがいします
0496495
02/06/30 06:36ID:wtzA9nm50500nobodyさん
02/06/30 12:37ID:???今だ!200番ゲットォォォッ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´
∧∧ ) (´⌒(´
⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
0502nobodyたん
02/06/30 14:21ID:???排他モードでロックしているというのはあるが。(その場合でも open は可能)
0503nobodyさん
02/06/30 14:41ID:???【Perl】ファイルロック(排他処理)について語ろう
http://pc.2ch.net/test/read.cgi/php/1024795138/
も参照してみては?
0504nobodyさん
02/06/30 15:34ID:???ファイルロックなんてどうせ巷の解説サイトみればすむことなのに、、。
0505nobodyさん
02/06/30 15:58ID:???492は質問ではなく誘導ですが…。
巷の解説サイトにあるファイルロックできみは納得して満足してるんだろうね。
そのサイト教えて。
0507nobodyさん
02/06/30 16:59ID:???だから、きみが納得して満足してるであろう巷の解説サイトを教えて。
どこ?
0508505 ◆EPPSxEpw
02/06/30 17:18ID:???↑適当にグーぐるしてください
ファイルロックは専用のスレもあります
>>504の解説してください。
0509nobodyさん
02/06/30 17:36ID:???そのリンクってはじめて見させてもらったけど大崎さんのスクリプトに
なんで余計なプロセス番号($$)付けてあるの?積算秒を付ける意味を
理解できてないの?
これがきみの言う「巷の解説サイトみればすむ」ってこと?
504の解説:
>ここにいる人は>>492の質問には答えられないレヴェルなのですね。
505に書いたとおり、「492は質問ではなく誘導です」
0510nobodyさん
02/06/30 17:46ID:???> まだ完全ではないのではないかという疑問が残ります。
何が疑問なのかが疑問です。
0511nobodyさん
02/06/30 18:08ID:???この板でこのレスの速さは508さん自身のサイトだったってことかな?
ロックできるかどうかのテストと実際にロックする操作を同時に行なう
ことができる atomic な関数 を使っているからロックが成功するのは
1プロセスであり、そういう意味では同じ名前にロックファイル名に
リネームしてもよいということ。
ここで、なぜ積算秒を付け足したロックファイル名にリネームするかと
いうと、もしデッドロックが残っても作成してから60秒よりも経過して
いるかどうかを確認するからです。
つまりプロセス番号($$)を付ける意味がまったくわたしには理解できません。
0512nobodyさん
02/06/30 18:19ID:???付け足すけどよく見たらさ。
ロック中ファイル名って、$lfh{path} . time . $$ だから
/^$lfh{basename}(\d+)/でマッチさせた $1 って time . $$ の値になる
可能性が大きいよね。(Windows系だと$$は-nnnnnnみたいな形式だったりする
けどさ)
でもその直後に平気で積算秒から $1 の値を引いてタイムアウト値と比較してる
からデッドロックをこれじゃ回避できないんでは?
0513508 ◆EPPSxEpw
02/06/30 18:49ID:???http://pc.2ch.net/test/read.cgi/php/1024795138/
どうせカウンターにしかつかっとらんのやろ。
ほかになんにファイルロックつかっとるのか知りたいDBとか?
>>508のサイトはgoogleでファイルロックで検索したら一番手前にあったから貼った。
------------------------------------------------
俺はXSについて聞いてんだ。
0514nobodyさん
02/06/30 19:14ID:???カウンタ程度ならむしろ使わないほうがいいだろう。うっとうしい。
まぁ、使うとしたら電子商取引システムを構築するときに使うかもな。
さっきのアドレス、きみのサイトだったらなおしとけよ。はずかしいから。
きみの検索でほんとにさっきのサイトがトップでヒットしたんなら、検索能力を
養ってから吠えるこったな。まずこれでも見ておれ。
%perldoc -m perlxs
0515508 ◆EPPSxEpw
02/06/30 19:40ID:???この板に電子商取引システムを構築したりする人間がいるなら
XSぐらい楽勝だろ。
0516nobodyさん
02/06/30 19:52ID:???>>515
で、なに質問してるんだっけ。ていうかあなた質問者本人?
perlxstutの説明に沿ってHello Worldとか作ってみた?
0518japh ◆J.5V8ta6
02/06/30 20:56ID:???perlxstutのサンプルじゃ不満だと?
http://www.kt.rim.or.jp/~kbk/perl5.005/
もっと突っ込んだサンプルが欲しいなら、
CPANから適当なXSモジュール落として参考にすれ
0519nobodyさん
02/06/30 22:15ID:???http://members.tripod.co.jp/ms_mzn/
0520pear ◆FRUIT8pk
02/07/01 05:54ID:???問い合わせたら、「そんなことはない、ソース見直せ」って
言われたんですけど、このソースで表示されなかったらおかしいですよね?
#!/usr/bin/perl
print "Content-type: text/html;\n\n";
print "<html><body>";
foreach (sort keys %ENV){
print "\$ENV{$_}:$ENV{$_}<br>\n"
}
print "</body></html>";
exit;
これは何かこちらのソースに問題があるのでしょうか
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています