【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あたりを見よう。
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;
これは何かこちらのソースに問題があるのでしょうか
よろしくお願いします。
0521nobodyさん
02/07/01 08:04ID:???HostnameLookups off
最近はデフォルトでオフだしね。
http://httpd.apache.org/docs/mod/core.html#hostnamelookups
CGIスレの方が良かったかも。
0522&r
02/07/01 11:41ID:???なんでキーを出力させてないの? たしかにREMOTE_HOSTがない場合もありうる
だろうけど
print "$_: $ENV{$_}<br>\n"
0523pear ◆FRUIT8pk
02/07/01 12:27ID:???最近のapacheではホスト名は取得できないということでしょうか。。
>522
一応、キーは \$ENV{$_} で、表示されています。
0524nobodyさん
02/07/01 15:00ID:???マップの情報が
123456789
123456789
123456789
123456789
123456789
123456789
123456789
とあってたとえば5,3だとしたら
34567
34567
34567
34567
34567
みたいな感じに表示させたいです。
でも、存在しない座標が含まれていたら表示しないようにしたいです。
参考になるようなページでもいいのでお願いします。
0526nobodyさん
02/07/01 17:34ID:???なんか宿題っぽいよなぁ・・・
まぁまずこういう構造体があったとして・・・
my @foo;
for my $idx1 ( 0..9 ) {
$foo[$idx1] = [];
for my $idx2 ( 0..9 ) {
$foo[$idx1][$idx2] = "$idx1$idx2";
}
}
で、まぁそしたらこんな感じか
sub print_matrix_range
{
my $matrix = shift;
my( $x, $y, $range ) = @_ ? @_ : (0,0,$#{$matrix});
my $xstart = $x - $range >= 0 ? $x - $range : 0;
my $ystart = $y - $range >= 0 ? $y - $range : 0;
my $xend = $x + $range <= $#{$matrix} ? $x + $range : $#{$matrix};
my $yend = $y + $range <= $#{$matrix} ? $y + $range : $#{$matrix};
for( my $curx = $xstart; $curx <= $xend; $curx++ ) {
for( my $cury = $ystart; $cury <= $yend; $cury++ ) {
print $matrix->[$curx][$cury],
$cury == $yend ? "\n" : ' ';
}
}
}
print_matrix_range( \@foo, 5, 3, 2 ); # 5=両方向に2マスだから
書き写しに失敗してないといいんだが。
0527質問です。
02/07/01 21:51ID:X3MphqPiこの下のメタタグはどうゆう役割をするのですか?
御答えくださいませ。
<META NAME=robots CONTENT="http://**************/">
0529nobodyさん
02/07/01 21:53ID:YKfyV+9J0530名無し募集中。。。
02/07/01 21:55ID:POquGnWBperlを使って、Submitボタンを押さずにデータをcgiに受け渡すことって
可能でしょうか?
0531nobodyさん
02/07/01 21:57ID:???これで出来るじゃん。
0532名無し募集中。。。
02/07/01 21:57ID:POquGnWBレスどうもです。
すいません、getじゃなくて、postっていうの忘れてました。
0533名無し募集中。。。
02/07/01 22:03ID:POquGnWB0534nobodyさん
02/07/01 22:03ID:???0535名無し募集中。。。
02/07/01 22:08ID:POquGnWBマジっすか。さんくすこ。
あと、折角きたんでもう少し知恵貸して頂いていいっすか?
0536nobodyさん
02/07/01 22:09ID:???0537名無し募集中。。。
02/07/01 22:11ID:POquGnWB旧板のスレから名前とレス抜き出して、外部から新板にカキコ。
とりあえず、gabri dukeと外部のhtmlでsubmitおしての投稿は成功したんで
なんとかperlで自動的に書き込みって可能にならないっすかね?
0538名無し募集中。。。
02/07/01 22:12ID:POquGnWBどもです。537っす。読みにくい文章でスマソ。
0539名無し募集中。。。
02/07/01 22:19ID:POquGnWB0540nobodyさん
02/07/01 22:21ID:???またーり待たれることを推奨する。
0541名無し募集中。。。
02/07/01 22:23ID:POquGnWBマターリ待ってみまふ。どもっす。
0542nobodyさん
02/07/01 22:40ID:133+Yg1+logファイルを移動するだけじゃダメなの。
0543nobodyさん
02/07/01 22:42ID:???perldoc lwpcook読んでみなはれ。
0545名無し募集中。。。
02/07/01 23:09ID:POquGnWBむずい、、、。postのcgi間のデータ受け渡しとLWP::UserAgentを
説明してるページ教えていただけると助かりまふ。おながいします。
■ このスレッドは過去ログ倉庫に格納されています