【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あたりを見よう。
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を
説明してるページ教えていただけると助かりまふ。おながいします。
0546nobodyさん?
02/07/01 23:34ID:???0547nobodyさん
02/07/02 05:39ID:???なんかうまく言ってない気がします。
マップのデータを1行づつ配列につっこんでやればできるのだろうか…
0548nobodyさん
02/07/02 07:25ID:???自分のBBSに移すなら直接LOG弄ってアプ出来ないの?
つーか連続投稿如きでLWP使わなくて良いと思うけど
LixyとかChannnelとかの厨房ツール拾って来てそれ弄れば良いじゃん?
0549nobodyさん
02/07/02 11:37ID:???「なんかうまくいってません」←コレ典型的な厨の応答だよ?
そんだけじゃ、読んでるこっちには何もわかんないのよ。
バカが直るまでお前は発言禁止。
0550nobodyさん
02/07/02 12:05ID:uXcHDU9t「だろうか…」 ←これもな。独り言を書くな。
0553nobodyさん
02/07/02 15:50ID:???すいません厨丸出しでした。
ちょっと質問の仕方を変えてみます。(526さんのだと特定の組み合わせしかだめっぽかったので)
マップデータが(例えばです。)
@map = (
'0000000000',
'1111111111',
'2222222222',
'3333333333',
'4444444444',
);
と入っている場合に>>524のようなことがしたいです。
0554nobodyさん
02/07/02 17:11ID:???部分マップを別配列に切り出す方向で考えてみた。
my $map_width = length($map[0]);
my $map_height = scalar(@map);
sub max { $_[$_[0] < $_[1]]; }
sub min { $_[$_[0] > $_[1]]; }
sub trim_map {
my ($x, $y) = @_;
my $x1 = max(0, $x - 2);
my $x2 = min($map_width, $x + 2);
my $y1 = max(0, $y - 2);
my $y2 = min($map_height, $y + 2);
return map { substr($_, $x1, $x2 - $x1 + 1) } @map[$y1 .. $y2];
}
my @mini_map = trim_map(5, 3);
print "$_\n" foreach @mini_map;
0556nobodyさん
02/07/02 18:08ID:???0557526
02/07/02 20:12ID:???0558nobodyさん
02/07/02 20:46ID:???$host = $ENV{'REMOTE_HOST'};
で取得したホスト名$hostがaaa.bbb.ccc.dddとなっている場合に
bbb.ccc.dddの部分だけを表示する方法を教えてください。
0559nobodyさん
02/07/02 21:20ID:???0560558
02/07/02 23:20ID:???ありがとうございました。
0561nobodyさん
02/07/02 23:33ID:???0562nobodyさん
02/07/03 05:04ID:???第三者からは見れない入力ページから文章を打ち込み、公になるのはcgiが吐き出した更新履歴ページのみ。
2.で、スクールに通った時作成した、掲示板を改良したが、タグが禁止なのと、<br>が吐き出されて改行位置がおかしくなるので、
以下の処理を丸ごと削除しました。
foreach($text1,$cont){
s/&/&/g;
s/"/"/g;
s/</</g;
s/>/>/g;
s/\r\n/<br>/g;
s/\n/<br>/g;
s/\r/<br>/g;
s/,/、/g;
}
3.構文エラーはなく、動作はしますが、一行置きに改行が入ったり、更新する度に一番新しい記事が何度も表示されたり
と言った具合でお手上げです。超初心者ですみません。この部分だけでは判断できないものでしょうか?
何か解決策ありましたらよろしくお願いします。
0563nobodyさん
02/07/03 05:36ID:???それと、君の質問内容だと perl がほとんど解ってないように見受けられるし、
基本的な所から勉強しようという姿勢も見られないから、まともな解答を
得るのは難しいと思われ
0565nobodyさん
02/07/03 12:18ID:???0566nobodyさん
02/07/03 12:35ID:6OBUBtcaうまくいきません。どうすればよいですか?
$buffer = $ENV{'QUERY_STRING'};
@buf = split( /&/ , $buffer );
foreach $data ( @buf ){
( $name , $value ) = split( /=/ , $data );
};
0568nobodyさん
02/07/03 12:45ID:???@buf = split( /&/ , $buffer );
foreach $data ( @buf ){
( $name , $value ) = split( /=/ , $data );
$FORM{$name} = $value;
};
0569nobodyさん
02/07/03 12:51ID:???0570nobodyさん
02/07/03 13:02ID:???もう過去の遺物か?
0572566
02/07/03 13:20ID:6OBUBtcaなんと便利なものが・・・知りませんでした
勉強してみます。
>>568-569
それで漏れのヴァージン作品がやっと動きました。感激
Thanx ALL
0573562
02/07/03 15:37ID:???どうもすいませんでした。
perlは確かに初心者ですが、何ぶん急いでたもので、、。
御指摘もっともです、すみません。もうちょっと初歩から勉強してみます。
ちなみに改行の件はperlの方ではなくhtmlの
<textarea>タグ内のwrap="hard"をとったら、解決しました。
出直してきます。
0575nobodyさん
02/07/03 20:49ID:???( ´,_ゝ`)プッ
0576nobodyさん
02/07/03 21:51ID:???書き方わかんなきゃ検索でもしてみろ。2510件ヒットしたぞ。
まぁ、ほとんどはたいしたこと書いてないページだが比較的ましなページが
3つほどあるだろう。
■ このスレッドは過去ログ倉庫に格納されています