Perl コーディング初心者質問コーナー Part26

このエントリーをはてなブックマークに追加
1nobodyさん
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
2nobodyさん:03/07/24 19:49 ID:???
3nobodyさん:03/07/24 19:49 ID:???
4nobodyさん:03/07/24 19:49 ID:???
[総合]
 ・Perl Com: http://www.perl.com/pub/
 ・CPAN.com: http://search.cpan.org/
 ・ActivePerl: http://www.activestate.com/
 ・CGI-ML:http://forest.ne.jp/cgi-ml/

[お薦め]
 ・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm ★読んどけ
 ・Perl Recipes: http://www.effectiveperl.com/recipes/
 ・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
 ・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
 ・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
 ・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
 ・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
5nobodyさん:03/07/24 19:49 ID:???
[Document&Tutorial]
 ・Home - Japanized Perl Resources Project: http://perldocjp.sourceforge.jp/
 ・Perl News: http://www.news.perl.org/
 ・Perl Monks: http://www.perlmonks.org/
 ・use Perl; : http://use.perl.org/
 ・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
 ・Perldoc.com: http://www.perldoc.com/
 ・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
 ・Rex Swain's Home Page: http://www.rexswain.com/
 ・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
 ・Perl Tuts: http://savage.net.au/Perl-tutorials.html
 ・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
 ・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
 ・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
 ・Perlfect Solutions: http://perlfect.com/
 ・The Perl Archive : http://www.perlarchive.com/
 ・Perl6 & Parrot VM についての情報: http://dev.perl.org/perl6/
 ・use Object; : http://perl.infoware.ne.jp/
6nobodyさん:03/07/24 19:50 ID:???
[Module]
 ・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module_/ (404)
 ・PPMPackages: http://www.activestate.com/PPMPackages/
 ・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm

[Security]
 ・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
 ・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
 ・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
 ・CGI and Security http://www.ansi.co.jp/tech/cgi/security/
 ・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
 ・How to Write Secure Code:http://www.shmoo.com/securecode/
 ・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt

[OS]
 ・Linux日本語マニュアル:http://www.linux.or.jp/JM/
 ・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
7あぼーん:あぼーん
あぼーん
8nobodyさん:03/07/24 20:35 ID:???
>>1
乙です。
9nobodyさん:03/07/24 21:45 ID:Wz9DxOV5
srand は rand が正確になったもんなんですか?
rand の変わりに srand を使えば良いんですか?
10nobodyさん:03/07/24 21:49 ID:Wz9DxOV5
いや違いますね。
11nobodyさん:03/07/24 21:56 ID:wyC1cRIx
>>9
Perl4までは、srandで一旦初期化する必要があったのだ
しかし5からはsrandはいらない
12nobodyさん:03/07/24 21:58 ID:???
変数の名前を取得するにはどうすればいいですか?
$xxxx="test";
$nameに"test"なく"xxxx"を代入したいんですが・・・。
13nobodyさん:03/07/24 22:00 ID:Wz9DxOV5
>>11
有難うございました。
ところで、そのPerl4かPerl5かは、
どこで分かりますか?
14nobodyさん:03/07/24 22:12 ID:???
>>13
perl -vって打つと分かるよ
15nobodyさん:03/07/24 22:16 ID:???
>>13
perlのバージョンもわからずにコード書いてるのかい?
もう4は少ないだろうが、もしそうだったら大きな影響があるのだから
先にそういうことは知っておくこと
16nobodyさん:03/07/24 22:35 ID:???
>>12
どういう場面でそれが必要になるのか分からん……
17nobodyさん:03/07/24 22:38 ID:???
>>16
たぶん釣りでしょ
18nobodyさん:03/07/24 23:20 ID:2xdh5YDx
プログラム全体でなく、あるディレクトリ
だけロック処理をしたいんですが、
その場合にはどうしたら良いのでしょうか?
19nobodyさん:03/07/24 23:24 ID:???
>18
ttp://pc2.2ch.net/test/read.cgi/php/1024795138/
↑で聞いた方がいいかもしれない。
20あぼーん:あぼーん
あぼーん
21nobodyさん:03/07/24 23:43 ID:???
>>17
釣りではないんですが。
22nobodyさん:03/07/24 23:50 ID:???
>>21
それならどういうケースでそんなことしたいか説明してくれ
サンプルのソースを添えてな
23nobodyさん:03/07/24 23:54 ID:???
>>9
http://flex.ee.uec.ac.jp/texi/perl/perl_31.html

>>11
http://pc2.2ch.net/test/read.cgi/php/1056730690/984n

>>12
local $xxxx = 'test';
my $name;
while ((my $key, local $value) = each %::) {
  ${$value} eq 'test' or next;
  $name = $key;
  last;
}
print $name;
24nobodyさん:03/07/24 23:57 ID:???
>>12
変数の名前はプログラムを書いた人が知ってるから、調べなくてよい。
25nobodyさん:03/07/24 23:58 ID:???
乱数の話しもう終わったかな。
おれはいつも、
rand(time*$$)ってやってるけど。。。
26あぼーん:あぼーん
あぼーん
27nobodyさん:03/07/25 00:01 ID:???
>>25
それは意味のあるものが返ってくるのか?

じゃなくて、、、コンピューターが出せる乱数は(rand())、擬似乱数なんだ、
ということを認識していないと、おもしろいことをされる可能性がある。
28nobodyさん:03/07/25 00:03 ID:???
要約すると、srand()で/dev/randomを使おう!
29nobodyさん:03/07/25 00:15 ID:???
URLで情報を渡して(http://xxxx.com/**.cgi?=名前.メールアドレス)
Cgiで認証させるにはどうやったらいいんでしょうか?
30nobodyさん:03/07/25 00:17 ID:???
前スレで既出だった模様…
31nobodyさん:03/07/25 00:17 ID:???
>>29
セッション管理

>>30はsrandの話に関して
32nobodyさん:03/07/25 00:21 ID:???
539 名前: 窓板住人 ◆winDOwS0aE :sage 投稿日:03/07/24 (木) 19:17 ID:???
WIndowsとはそんなに関係ないですが、CGIでよく使われるらしい
スクリプト、CGI.pmにクロスサイトスクリプティング脆弱性があるようです。
CGI 職人、あるいはCGI使われている方々は最新のバージョンに
アップデートすることを推奨します。

http://archives.neohapsis.com/archives/bugtraq/2003-07/0267.html

みなさん、大丈夫ですか
33nobodyさん:03/07/25 00:36 ID:???
>>23
12にそういうコードを教えるのはよくないと思うぞ
34nobodyさん:03/07/25 01:00 ID:???
CGI.pm なんて使ってねーしぃ
35nobodyさん:03/07/25 01:02 ID:???
>>32
start_form()使ってないですね。
フォーム生成にCGI.pm使います?

>>12
意図がつかめない…。
具体的に何をしたいかを書くと答えが得られるかもね。
多分、ハッシュを使うと解決しそうな問題な気がする。。
36nobodyさん:03/07/25 01:06 ID:???
>>28
既にデフォルトのseedは/dev/randomがあれば/dev/randomを使うようになってる。
Windowsとかだとどうしようもないけどね。
37nobodyさん:03/07/25 01:22 ID:???
CGI.pm
はフォームのデータをひらったり、クッキーを作ったりするのに
使ってたりする。
HTMLを生成するのには使ってない。。。だって
手で直接打った方が早いし、外部テンプレにしたら
もっと楽だし
38nobodyさん:03/07/25 01:28 ID:???
>>12って超初心者でプログラムの流れをうまく書けなくて
あんなこと思いついただけのような気がする
39nobodyさん:03/07/25 02:30 ID:???
>>38も超初心者
40nobodyさん:03/07/25 02:34 ID:???
>>39
38の言ってることが当たりなのか?12よ
41nobodyさん:03/07/25 02:35 ID:???
>>40
そうだよ!プンスカプンスカ
42nobodyさん:03/07/25 02:36 ID:???
>>39
>>40
>>41

ジサクジエーン
43nobodyさん:03/07/25 02:38 ID:???
すみません、教えてください。

<FILEHANDLE> while ( $count-- < 0 );

ってやったあと、tellしたら、データのバイト数分の値がでたんです。
これはFILEHANDLEで指定しているファイルを1行ずつ読んでるんだと思うんですが、
$_には入ってないみたいなんです。

いったい読み込んだデータはどこいっちゃったんでしょう。
44nobodyさん:03/07/25 02:44 ID:???
すいません>>12=>>38です。
45nobodyさん:03/07/25 02:46 ID:???
それ、ほんとに1行ずつ読んでると思うか?
46nobodyさん:03/07/25 02:52 ID:???
>>43
いや、読んでない。
(正確には、読んでるけど全部捨ててるようなもの)

基本的なファイルの読み方をもう一度おさらいしてみよう。
47nobodyさん:03/07/25 02:55 ID:???
はい、なんとなく思います。
4812:03/07/25 02:56 ID:???
なんとなく読みこんでるとおもったんですが、、、
49nobodyさん:03/07/25 03:00 ID:???
>>43=12かよ
50nobodyさん:03/07/25 03:03 ID:???
どひゃー
5143:03/07/25 03:05 ID:???
43 ne 12 です。

>>45>>46
ファイルは、$/をセパレータに、なんというか、セパレータまでのデータを
1行として、そこまでを評価していくんだと思います。

その、全部捨ててるっていうのがなんというか、腑に落ちないんです。

あの、ダンプでしたっけ?PERLがなにやってるかを逐一ログに残すやつ。
それを見たら少しは理解できるとおもうんですが、
abnormal program termination
ってでちゃうんです。

困ったなあ
52あぼーん:あぼーん
あぼーん
5338:03/07/25 03:15 ID:???
すまん。俺も超初心者なんだ・・・。
54nobodyさん:03/07/25 03:22 ID:???
>>51
単に1行読むたびに$_に代入されるから、直前に読んだデータが上書きされてるだけ。
それが見かけ上「捨ててる」ってこと。
んでEOFまで逝っちゃうと、あとは何度読んでもundefが返ってくる。
それと、普通はwhileの条件式に<FILEHANDLE>を書いてループをまわすものだけど、
謎の変数$countでまわしてる。これは一体どこから出てきて何が入ってるのか。

腑に落ちないって、どういう結果を期待してるの?まずそれを教えてよ。
55nobodyさん:03/07/25 03:47 ID:???
>>43
そのコードに入る前の $count の値が 0 以上ならば $count-- < 0 は偽。
よって <FILEHANDLE> は一度も評価されないまま while から抜けるから、
これ以前に読み込んでいないなら tell は -1 を返す筈。
$count の値が 0 未満なら無限ループ。
あと行入力演算子が $_ に自動で代入してくれるのは while の条件部に
書いた時のみ。
5638:03/07/25 03:54 ID:???
すみませんでした。
なんとなくで、分かりにくい説明ありがとうございました。
5754:03/07/25 03:55 ID:???
>あと行入力演算子が $_ に自動で代入してくれるのは while の条件部に
>書いた時のみ。

あ、ほんとだ。リファレンス本見たらそう書いてあった……
おいらも適当なこと言ってすまんかった。反省。そしてありがとう。

58nobodyさん:03/07/25 04:08 ID:???
質問に混じって茶々入れまでしてるのかよ
まじめにやれや
5938:03/07/25 04:21 ID:???
すみませんでした。
60nobodyさん:03/07/25 04:22 ID:4OBr2CQn
祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り

ニーノさんのホームページ作り2
http://ex.2ch.net/test/read.cgi/entrance/1059029010/
ニーノ ◆p9GipySMGk によってラウンジにたてられたこのスレで、

http://page.freett.com/ninogumi/
【ニーノさんのホームページ】
というサイトが作られた。(現在もコンテンツは爆発的に増えてるよ。)

さぁ、君もアイディアを出して、2CHネラーだけの最強サイトをつくろう!

祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り祭り

61nobodyさん:03/07/25 04:29 ID:???
要は…

$lolita = <FILE>;

こういうコードがどういう動きをするか理解しないとだめだ
62nobodyさん:03/07/25 05:11 ID:???
"12<>34"という形のデータを左側優先で大きい順に並べ、
左の値が同じなら、右の値の大きさの順に並べるプログラムを作ろうと思うのですが
ヒントをください。
"1<>9"
"2<>3"
"8<>4"
"2<>8"
"8<>8"

"8<>8"
"8<>4"
"2<>8"
"2<>3"
"1<>9"
と並び替えるようなものです。
63nobodyさん:03/07/25 05:28 ID:???
>>62
http://m-factory.zone.ne.jp/perl/SchwartzianTransform.html
http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/199909/mgp00039.html

@sorted_data = map $_->[0],
sort { $b->[1] <=> $a->[1] || $b->[2] <=> $a->[2] }
map [ $_, split /<>/ ],
@data;
6443:03/07/25 07:30 ID:???
>>54-57

すみません。説明不足でした。
やりたいのは、ファイルの読み飛ばしです。
$count=10だとすると、
11行目以降のファイル内容を取得することなんです・

<FILEHANDLE> while ( $count-- < 0 );
としたあとで、
push(@line,scalar(<DAT>)) while($line-- > 0); #$lineは$count以降の取得したい行数
ってやると、ちゃんと11行目以降の内容が@lineにはいるんです。
つまり<FILEHANDLE>に対するファイルポインタは、巻き戻ってないから、それを
逆に利用してるんだそうです。

で、腑に落ちないのは
>あと行入力演算子が $_ に自動で代入してくれるのは while の条件部に
>書いた時のみ。
ってところで、$_に代入しなきゃどこに入れてるんだ、っていうことです。
PERLの、なんというか一時記憶領域みたいなものに入れてるんでしょうか。
あと、$_に代入しない場合でも、やっぱり1行ずつ読んでるんですよね???

結果はいいけと、PERLがやってることがなんとなくでも理解できないと、
応用できないんかなって。
65あぼーん:あぼーん
あぼーん
66あぼーん:あぼーん
あぼーん
67 ◆hMJAPH9PWA :03/07/25 11:31 ID:???
| <FILEHANDLE> while ( $count-- < 0 );

…これで動いてるって?
既に>>55で指摘されてるけど、比較演算子が逆じゃない?

| ってところで、$_に代入しなきゃどこに入れてるんだ、っていうことです。
| Perlの、なんというか一時記憶領域みたいなものに入れてるんでしょうか。

そうだよ。
<FILEHANDLE>ではなく、readline(FILEHANDLE)と関数呼び出しとして書くと分かるかな?
ついでに言うと、print()とかも成功/失敗を知らせる値を返してる。
大抵は必要ないから即座に捨ててるだけで。


68nobodyさん:03/07/25 14:14 ID:???
>>64
最初からその2行のコードと説明してくれれば早かったのに。
$_ を気にしてるようだが、$_ には読み込まれないから考える必要はない。

scalar(<DAT>) ← これがミソで、リストである<DAT>を強制的に
スカラとして評価することによって<DAT>の1行だけを取得しているので
ここでは1行読み込みみたいな動きになる。
69nobodyさん:03/07/25 14:37 ID:???
リストと配列って同じ意味ですか?
70nobodyさん:03/07/25 15:12 ID:???
そんな事より、リファンレンスが解らない…(´д⊂ヾ
71nobodyさん:03/07/25 15:26 ID:???
犯罪予告キタ━━━━━(゚∀゚)━━━━━!!!!
【犯行】明日入殺します【予告】
ttp://ex.2ch.net/test/read.cgi/entrance/1059109904/l50
72nobodyさん:03/07/25 15:27 ID:???
ああ、いけね
なんでリストなんて書いちゃったんだろ
73nobodyさん:03/07/25 16:09 ID:ysQnpLo4
ソースをSJISで書けといわれたのですが、「表」等の文字化け
対象文字列の扱いに困っております。
$htmlの中に「表」等の文字が入っている場合、
$html =~ s/5C/5C5C/sig;
これで回避できるかと思ったのですが、どうもうまくいきません。

教えていただけたら幸いです。
74nobodyさん:03/07/25 16:15 ID:???
\x5c
75nobodyさん:03/07/25 16:45 ID:???
>>74
お返事有難うございます。
早速下記のようにやってみましたが、まだいかないようです。
$html =~ s/\x5c/\x5c\x5c/sig;

初心者で申し訳ないです、、、
76nobodyさん:03/07/25 16:51 ID:???
>>75
$html = "表示";

この時点で、$html内には0x5cが含まれないことに注意。
あとは自分で考えてみて。
77nobodyさん:03/07/25 17:06 ID:???
$html = '表示';
7873:03/07/25 17:23 ID:???
うーん、素で分かりません、、、

$htmlは、ヒアドキュメントを使って内部に変数が含まれて
いるため、シングルクォーと等は使えません、、、

再度しばらく考えてみます、、、
79nobodyさん:03/07/25 17:36 ID:???
ヒアドキュメントでソースに直で書いてるんなら、

  表\示

でいいじゃん。
8073:03/07/25 17:48 ID:???
メンテナンスはプログラムが分からない人がやるので、
「表」や「能」等を平気で普通に使ってしまう可能性が
あるため、最後にまとめて変換してしまおうと考えました。

出力形式は要望であるため、変えられないのが痛い
です、、、
81nobodyさん:03/07/25 17:51 ID:???
>>80
HTMLをヒアドキュメントではなく、外部ファイルにする。
これで解決。メンテナンス性もよくなって一石二鳥。
8273:03/07/25 18:00 ID:???
>>81
それが許されないからヒアドキュメントなのです。
できればそうしたいのですが、ロードバランサーを使用した
サーバ3台体勢なため、どんなに説明しても1ファイルで
完結してくれと、、、

すみません、無駄にスレ消費させているので書き込み自粛
します。
83nobodyさん:03/07/25 18:11 ID:???
>>82
__DATA__ トークン以下に HTML データを書いて <DATA> で読む。
84nobodyさん:03/07/25 18:58 ID:???
>>73
シングルクォートで囲んでおいて、変数部分を置換する。
85nobodyさん:03/07/25 20:25 ID:cdWg8/H5
あるcgiでは<img src="$imgs/seee.png">できちんと画像が
表示されるのに、これでは画像が×印になってしまい
表示されません。何が抜けているのか何でも良いので
気付いた所を教えて欲しい。
sub wedd{
if(!$tpre){
$log .= "<img src=''$imgs/seee.png''><br>\n";
$tm=0;
$trpe='';
}
です。
86nobodyさん:03/07/25 20:36 ID:???
>>85
サブルーチンだけでわかるわけないだろう
このサブルーチンを呼び出す前、あるいは呼び出した後のどこかが
おかしいだけ
87nobodyさん:03/07/25 20:37 ID:???
$log .= "<img src=\''$imgs/seee.png\''><br>\n";
88nobodyさん:03/07/25 20:43 ID:???
>>86
ハズカシイネェ
89nobodyさん:03/07/25 21:06 ID:???
みんな釣られたんじゃないの?
>>87は当然としても、エスケープしないと500エラーで
画像が×どころじゃないだろ
90nobodyさん:03/07/25 21:46 ID:???
釣りで処理する回答者はいらね。
91nobodyさん:03/07/25 21:49 ID:???
第1問はここまで

>>86さん 2点
>>87さん 5点
>>88さん 0点
>>89さん 10点

もうちょっとがんばりましょうね
92nobodyさん:03/07/25 22:04 ID:???
>87,>89
ダブルクォーテーション内のシングルクォーテーションを、しかも2個の内一つだけエスケープして意味あるのか?
>85はただの間違い探しだろ。
93nobodyさん:03/07/25 23:21 ID:???
$log .= qq{<img src="$imgs/seee.png"><br>\n};

これで何点貰えるのかなぁ。
94nobodyさん:03/07/25 23:31 ID:uJCpPyXD
どこにシングルクウォーテーションがあるのかぜひ教えてもらいたいものだ
95nobodyさん:03/07/25 23:32 ID:uJCpPyXD
クォー
の間違いだ。スマソ
96nobodyさん:03/07/25 23:44 ID:???
ここはクイズスレになったのか?
97nobodyさん:03/07/25 23:45 ID:???
>>94
>>85をよく見ればわかる。一見ダブルに見えるシングル2個連続。
9885:03/07/25 23:59 ID:qXznWoh0
>>93
おお!
とりあえず、それで出来ました。
これで道は開けます。
どうも有り難うございました。
9943:03/07/26 00:58 ID:???
>>67-68
ありがとうございました。そうかreadlineか。PERLFUNCを読み直して
すっきりしました。

比較演算子は逆ですね。($count-- > 0)ですよね。
100nobodyさん:03/07/26 01:22 ID:???
>>98
お前>>85のソースはコピペしたのか?
あと出力結果のHTMLソースは眺めたのか?
101nobodyさん:03/07/26 03:55 ID:4h1zCzy4
perl5.005からしか使ったことがなかったのですが、
perl5.003の環境で使う状況になってしまいました、
5.003で使えない表現を纏めるにはどこをみれば良い
でしょうか?
また、HTML::Templateをつかいたいのですが、
対応していない表現が多いようで使えません。
書き換えることでつかえるようになるでしょうか?
102あぼーん:あぼーん
あぼーん
103nobodyさん:03/07/26 06:32 ID:???
>>101
perl -D

なんちて。
104あぼーん:あぼーん
あぼーん
105あぼーん:あぼーん
あぼーん
106nobodyさん:03/07/26 11:25 ID:NdYn8w9o
perlのインデントとhtmlのインデントについて皆様の意見を聞かせて頂きたいと
思っております。

昔C言語を少しだけ使っておりまして、その習性に引きずられてか、htmlを作るときは
何となくインデントさせていました。例えば
<HEAD>
 <META HTTP-EQUIV="content-type" CONTENT="text/HTML;charset=euc-jp">
 <TITLE>title</TITLE>
</HEAD>
の様にですね(無駄といえば無駄なんでしょうけど…)。

そして上記のhtmlをperlで出力させる際には、
#!/usr/bin/perl
print " <HEAD>";
print "  <META HTTP-EQUIV=\"content-type\" CONTENT=\"text/HTML;charset=euc-jp\">";
print "  <TITLE>title</TITLE>";
print " </HEAD>";
等と書いてインデントされた状態のhtmlが出力されるようにしていました。

しかしif文やfor文内にてhtmlを出力する処理となった場合等、perlのソースを
インデントさせて、そこでまたさらにインデントされたhtmlを出力するために
文字列を記述していくと、なんだか非常に見づらいソースになってしまうように
感じてしまいます(ソース内でhtml部分のインデントが一致しない等)。

今後メンテするのはperlのソースなので、perlのソースとして読みやすいものにすれば
よいと思うのですが、かといって出力であるhtmlが読みづらいとメンテが大変であるとも
思います。皆様どのように考えて作られてますでしょうか?
107106:03/07/26 11:42 ID:???
すみません、自己レスで一部修正します。
> print " <HEAD>";
print "<HEAD>";
ですね。
ソースからコピペして、インデントを全角スペースにする時に間違えました…
108nobodyさん:03/07/26 11:46 ID:???
print でスタティックに html を出力するよりは別ファイルにしたほうがよくないか?
109nobodyさん:03/07/26 12:01 ID:???
俺はperl自体の記述がもっとも見やすいようにしてる。
ループとかでテーブル生成、とかそーゆー時は、出力したところが見やすいようにする。

で、最終的にプログラムが完成し、出力するHTMLが意図した通りになったのを確認したら、
出力時のタブや改行などは全部消す(出力直前に正規表現で)。
文字のスペースは全て&nbsp;を使ってるからスペースも消す。
110nobodyさん:03/07/26 12:19 ID:???
別ファイルにすれば見た目に悩まなくてすむと思うけど
行数も減って処理の流れが読みやすくなるし
111106:03/07/26 12:33 ID:???
>>108
>>110
別ファイルということは、やっぱりrequire文でhtmlを出力するためのスクリプトを
呼び出すということでしょうか?

いろいろとあたっている時に、>>106で例に挙げているようなスクリプトで
TITLEタグの内容を変数で与えてあげられるようにしているのをよく見てまして、
やっぱり処理部分と出力部分は分けたほうがいいのでしょうねぇ、と思っては
います。
ちなみに別ファイル内でのhtml部分のインデントはどうされていますか?
112nobodyさん:03/07/26 12:36 ID:???
ヒアドキュメントは?
またはprintの部分だけインデントしないとか。
113106:03/07/26 12:36 ID:???
>>109
デバッグ終了時に、出力時に不要な文字を消す処理を有効にする、という事ですか?
ちなみにそうなると、完成版が出力するHTMLはインデント無しですか?
114nobodyさん:03/07/26 12:45 ID:???
>>112
そうですね。ヒアドキュメントも考えてみたのですが、bash等で使えるような
空白+終端文字列(<<-でしたっけ?)等が無さそうで、難儀しています…
115nobodyさん:03/07/26 12:58 ID:???
>>111
ファイルオープン→読む→出力→ファイルクローズだと思うけど。

>>114
bashでシェルスクリプト組んでるの?
ちょっと良くわからない。。
116nobodyさん:03/07/26 13:12 ID:???
>>115
> ファイルオープン→読む→出力→ファイルクローズだと思うけど。
それだと、外部ファイルをそのまま出力という形になって、例えばファイル中に
変数を仕込んでおいて、その変数の値を表示させる…等という事をしたい場合、
何か上手い方法はありますか?sed的な置換を駆使でしょうか?

> >>114
> bashでシェルスクリプト組んでるの?
実はOSがVineLinux2.6R1でして、/bin/sh -> bashとなっているので…
117109:03/07/26 13:15 ID:???
俺の場合、単純なのなら
>ファイルオープン→読む→出力→ファイルクローズだと思うけど。
これと同じようにしてる。
ただ、やや複雑になってきたりするとやっぱプログラム内で生成する。
ループでテーブル生成、ってのを多用するから。

ヒアドキュメントは、絶対左側に書くって規則があるから使わない。
しかもヒアドキュメントだと状況によって細かく出力を変えれないからあんま使い道ない気が…。
ヒアドキュメント使うなら外部にHTMLを書いたtxtを置くかな。

>別ファイルということは、やっぱりrequire文でhtmlを出力するためのスクリプトを
>呼び出すということでしょうか?
プログラム内でHTMLを生成する必要がある上、あまりに縦長で邪魔になった時は、
こーゆーのも作った事あるよ。俺は。
118nobodyさん:03/07/26 13:30 ID:???
requireのほうが簡単でしょ
変数だってリファレンス使えばいいし
119あぼーん:あぼーん
あぼーん
120115:03/07/26 14:02 ID:???
>>116
独自なタグとか作って置換、splitで切り張りとか。
書き換える部分が一点に集中してる(単一テーブルなど)の場合、
二つのファイル(ヘッダ部とフッタ部)を作ったり。

>>117
>ヒアドキュメントは、絶対左側に書くって規則があるから使わない。
変数に入れれば、思いのままに整形できるよ。
クックブックのレシピ1.11
121115:03/07/26 14:37 ID:???
外部ファイルを使うなら、HTML::Templateモジュールを使うと便利になるかも。

連続カキコ失礼。
122nobodyさん:03/07/26 18:21 ID:???
123nobodyさん:03/07/26 23:22 ID:UhENImdi
確か、perldocをWindows help形式に変換したものを、どこかで配ってたと思うのですが、
どこで配ってたか忘れてしまいました。
ぐぐったものの見つからず。

どなたかご存じだったら教えてください。
124nobodyさん:03/07/26 23:34 ID:P3xPXFZK
}if($yh > 250 && $yh <= 280 && $gt < 51 && $iu < 71
&& $gg < 71 && $fd < 71 && $ar < 71 && $ss < 2500 ){

を書きました。
ちょっと長いから難しいかなあと思って一通りテスト
したんですが、なんと全部正しかったです。
しかし、やはりプログラム処理も間違える事
はあるんでしょうか?
125nobodyさん:03/07/26 23:36 ID:???
Perlの場合って、変数名や関数名の付け方で、
ある程度、グローバルスタンダードというか、
おきまりの付け方って存在するんでしょうか?
126nobodyさん:03/07/26 23:47 ID:???
>>123
ActivePerl ならインストールしたディレクトリ以下に入っているかも知れない。

>>125
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlstyle.html
127nobodyさん:03/07/27 02:46 ID:???
<!HOGEHOGE>
これはHTMLだとコメントになりむしされる。
これを利用して、このように。

$hoge = "seiseishitai html no naiyou";
$hogehoge = "mouhitotsu seisei shitai html no naiyou";
open TEMP,"/path/to/template.html">
while(<TEMP>){
s/<!HOGEHOGE>/$hoge/g;
s/<!HOGE>/$hogehoge/g;
print;
}
128nobodyさん:03/07/27 03:12 ID:???
>>127
> <!HOGEHOGE>
> これはHTMLだとコメントになりむしされる。
初めて知ったよ。
129nobodyさん:03/07/27 04:00 ID:???
<!--HOGEHOGE-->
だった。
130nobodyさん:03/07/27 09:21 ID:???
>>125
ない。「それにはいくとおりもやりかたがある」から。
C言語出身のやつはC言語での命名規則を、
Java出身のやつはJavaでの命名規則を、
使えばそれでいい。
131nobodyさん:03/07/27 09:51 ID:???
"use 全部小文字"は予約されてるからパッケージ名に全部小文字は使わない。
全部大文字のsubも使わないほうが良かったような。
132nobodyさん:03/07/27 11:40 ID:qAaynntQ
フォームから送られてきたデータを切り分ける処理を

foreach(split(/&/,$query)){略}

とした場合、splitは1回だけ実行されるのでしょうか。
ループのたびに実行されてたら馬鹿みたいなので。
133nobodyさん:03/07/27 11:47 ID:???
ループのたびにsplitされたら、永久にまわり続けるだろう。
134132:03/07/27 11:54 ID:???
…そうか。少しは考えろよ俺。
くだらない質問失礼しました。
135あぼーん:あぼーん
あぼーん
136あぼーん:あぼーん
あぼーん
137nobodyさん:03/07/27 14:00 ID:???
>>132
なんで最近こんな奴ばっかなんだよ。
>splitは1回だけ実行されるのでしょうか。
他人に聞くよりPerlに聞いた方が正確だし早い。やればわかるだろ。
138nobodyさん:03/07/27 17:20 ID:LVhmum4F
テキストから、条件にあてはまるものの件数、文字、を出力します。
件数を先に出力したいから、
$n=0;
open(DATA,"data.txt");
foreach(<DATA>){
if($_ =~ m/$keyword/){ $n+=1; }
}

print "$n件見つかりました。<br><br>";
close(DATA);
open(DATA,"data.txt");

foreach(<DATA>){
if($_ =~ m/$keyword/){ print "$_<br>"; }
}

こうやってるんですが、2回データ開くってのが、ソースが変だし、効率が悪いと思うんですが、効率いい方法ありませんか?
「件数」を先に出力するので、この方法以外考えられません。
条件に当てはまったものを、配列に入れて、後で出力ってのも考えましたが、
配列は効率わるそうで・・・
ご教授お願いします
139nobodyさん:03/07/27 17:22 ID:???
無限ループが心配な場合は$f++>=100 last;
とかストッパーかけておくと良い。
140nobodyさん:03/07/27 17:25 ID:???
while (??) {
if ( 表示する条件 ) { continue; }
$n++;
if (??) { contine; }
if(??) { contine; }
print $_; or $xx = $_;
}

$n件見つかりました
結果$xx
141nobodyさん:03/07/27 17:27 ID:???
if (??) { contine; }
if(??) { contine; }
↑ゴメン s/contine/last/g
ついでに、ここは表示するページのはじめの数から後の行数を先に求めておく。
142nobodyさん:03/07/27 17:45 ID:LVhmum4F
>>140
ゴメン。難しくて理解できない・・・
ちょっと解説お願いできますか?
143nobodyさん:03/07/27 17:54 ID:???
配列は効率が悪いの?
144nobodyさん:03/07/27 17:59 ID:???
同じファイルを2回読むよりは効率いいんでない?
メモリは食うだろうが。
145nobodyさん:03/07/27 18:09 ID:???
$n=0;
open(DATA,"data.txt");
while(<DATA>){
if($_ =~ m/$keyword/){ $n+=1; $str .= "$_<br>"; }
}
close(DATA);
print "$n件見つかりました。<br><br>$str";


これじゃだめなのん?
オープン2回が気になるなら、seekで戻せば開きなおす必要はなし。
146nobodyさん:03/07/27 18:15 ID:???
@hit = ();
$n=0;
open(DATA,"data.txt");
while(<DATA>){
if(/$keyword/o){
push(@hit, $_);
$n++;
}
}

print $n. '件見つかりました。<br><br>';

foreach(@hit){
print $_. '<br>';
}
close(DATA);

んじゃ、配列使うやつ。
DATAファイルハンドルは避けたほうがいいよ。
改行もしっかり処理しよー。
147nobodyさん:03/07/27 19:03 ID:bAtOJVka
Aというサーバーで動くperlスクリプトが
Bというサーバーでは動きません。
原因として考えられるのって何があるでしょうか?
148nobodyさん:03/07/27 19:04 ID:???
>>147
スレ違い
149nobodyさん:03/07/27 19:25 ID:???
150nobodyさん:03/07/27 19:58 ID:LVhmum4F
>>143
効率は悪くないんですかね・

>>145>>146
ありがとうございます。
ソートもできたらなぁ、と今思っていたので配列にすることにします。

どうもありがとうございました
151あぼーん:あぼーん
あぼーん
152あぼーん:あぼーん
あぼーん
153nobodyさん:03/07/27 20:59 ID:???
配列につっこんでまた回すよりも
文字列として $str .= $_;
ってやったほうが良いでしょう。
154nobodyさん:03/07/27 21:00 ID:???
>>150
読んでなかった。ごめんにぇ。
155nobodyさん:03/07/27 21:35 ID:???
>>154は引き篭もり板のコテハン「chan」か??
156(*゚p゚)Chan ◆ClChang/Go :03/07/27 22:01 ID:???
>>155
(*゚p゚)σ違うにゃりよ!!!
              ε=ε=ε=┌(*゚p゚)ノ サササッ
157nobodyさん:03/07/27 22:11 ID:???
(´-`).。oO(どこにもバカコテっているもんだなぁ。。。)
158nobodyさん:03/07/27 22:14 ID:???
コテハンはデフォルトでバカ。バカじゃないコテのほうが珍しい。
159nobodyさん:03/07/27 22:16 ID:???
アクセスログをopen(FH,">>log.dat")で書き込みして生ログがどんどんかさばってく
スクリプトなのですが、どのへんまでたまったら古いログを消していくべきか
こまっています。

たとえば1MBのログファイルを開け閉めするのと10KBのログファイルを開け閉めするので
処理時間に差が出たりするのでしょうか?
160nobodyさん:03/07/27 22:41 ID:???
>>159
>たとえば1MBのログファイルを開け閉めするのと10KBのログファイルを開け閉めするので
>処理時間に差が出たりするのでしょうか?
聞く前に試せよ。その試した結果に疑問があるなら質問しに来い。
161nobodyさん:03/07/27 22:42 ID:???
>>159
あるんじゃないの?

何のアクセスログか知らないけれど、
ログを切る方法なんていろいろあるでしょ。

apacheのログ?
rotatelogs。。
logrotate。。。
あるいはシェルとか。
162nobodyさん:03/07/27 22:48 ID:???
>>159
アペンドなら有意な差(特に1Mと10Kなら)はないと思う。実測した事ないので>>160が言ってるように
測定して報告してくれ。
163nobodyさん:03/07/27 22:57 ID:???
>>161
いえ、apacheのじゃなくてよくある画像を用いたアクセスログです。
あくまで一般的な知識としてどうなのか、と思って訊いてみたんですが。
測定する方法を考えて出なおしてきます。
164nobodyさん:03/07/28 00:32 ID:???
効率が気になる奴は自分でプロファイリングでもしてみろっつの。
DProfとかあんだろ。
165nobodyさん:03/07/28 00:39 ID:???
>>163
use Benchmark;
166nobodyさん:03/07/28 01:03 ID:???
なるほ。
167159:03/07/28 04:46 ID:???
やってみた。
空のファイルに対してopen(FH,">>$file")でlocaltimeを書き込んでいくループを
やらせてみたら、ファイルサイズが100KBだろうか1MBだろうが10MBになろうが
処理のスピードは変化無しでした。
まあ考えてみたら>>で書き込むのってファイルを開いてポインタを末尾に移動して
書き込むだけだから、そのファイルが小さかろうが大きかろうが関係無いっぽいけど。

ちなみに同じことを毎回行を配列化→pushで追加→>で新規書き込みっていう
ループでやってみたら、当然処理はだんだん遅くなりました。

16[4-5]のモジュールは使い方よくわかりませんでした。
168nobodyさん:03/07/28 06:36 ID:+imB0DDx
教えてください。

サーバー上に掲示板のログが大量にあります。
これらを小さくまとめる&転送速度を上げるために、gzipで圧縮して閲覧可能にしたいと思っています。

gzipの圧縮は1度行えばいいので、Windows上かシェルで行い、サーバー上に置いておくことになりますが、
そのファイル名が、$FORM{url} だとすれば、

print "Content-type: text/html;charset=Shift_JIS\n";
unless($ENV{'HTTP_ACCEPT_ENCODING'} =~ /gzip/){&error($FORM{url}); exit; }
if($ENV{'HTTP_ACCEPT_ENCODING'} =~ /x-gzip/){ print "Content-encoding: x-gzip\n\n"; }
elsif ($ENV{'HTTP_ACCEPT_ENCODING'} =~ /gzip/){ print "Content-encoding: gzip\n\n"; }

if (!open(GURL,"<$FORM{url}")){ &error(1); exit; }
binmode GURL;
@gzipdata = <GURL>;
close(GURL);

print @gzipdata;
exit;
#エラーの場合はURLをリンクで示してダウンロードしてローカルで解凍してもらうよう表示する。

こうなるのかと、とりあえず書いてはみたものの、一度メモりに読むのは避けられないのか、
バイナリ扱うPerl書いたことないからこれでいいのか。

あるいはもっと効率的な方法をご存じの方は教えてください。
169nobodyさん:03/07/28 11:36 ID:???
下のようにファイルの内容を処理しているのですが、一行ずつ処理する場合
後ろから処理するということはできないでしょうか?

while( <FILE> ) { 処理 }

配列などに入れてしまえばできるのですが、メモリとしてはこちらの方がよいと
思いまして、どうかよろしくお願い致します。
170nobodyさん:03/07/28 11:44 ID:???
>169
逆順は難しいと思われ。
一行のバイト数が固定なら色々とやりようもあるだろうが。
可変行の場合、俺はやり方を知らない。

配列でやるんだったら配列の入れ方を工夫するといいかも。
@data = <FILE>;
@data = reverse(@data);
とやるよりも
@data = ();
while(<FILE>){unshift(@data);}
とした方がいいかもしれない。
171nobodyさん:03/07/28 11:45 ID:???
>170 =~ s/可変行の場合/一行のバイト数が可変の場合/;
172nobodyさん:03/07/28 12:04 ID:???
>>168
試してないけど。

binmode STDOUT;
my $CRLF = "\x0d\x0a";
my $encoding = $ENV{'HTTP_ACCEPT_ENCODING'};

print 'Content-Type: text/html; charset=Shift_JIS', $CRLF;

$encoding =~ /gzip/ or &error($FORM{url}, exit;
open GURL, '<' . $FORM{url} or &error(1), exit;

if ($encoding =~ /x-gzip/) { print 'Content-Encoding: x-gzip', $CRLF }
elsif ($encoding =~ /gzip/) { print 'Content-Encoding: gzip', $CRLF }

print $CRLF;
print while read GURL $_, 1024; # LENGTH は適宜調整
close GURL;

>>169
http://www.din.or.jp/~ohzaki/perl.htm#File_Reverse
173nobodyさん:03/07/28 12:09 ID:???
>>169
File::ReadBackwards
174nobodyさん:03/07/28 12:16 ID:???
>>168
Content Negotiationに任せればいいのでは?
175nobodyさん:03/07/28 13:21 ID:ZypqctSD
変数はmyで局所化するのが基本みたいなんでそうしていますが、
例えば同じ変数をどこのサブルーチンで使いたい場合はどうするんでしょうか。
いちいち変数の受け渡しをしないといけないんでしょうか。
176nobodyさん:03/07/28 13:45 ID:???
>>175
局所化しなきゃいい。
177nobodyさん:03/07/28 13:47 ID:???
>>168
174が言ってるように、ファイル名に.gz追加
logfile1.html.gz
HTTP_ACCEPT_ENCODING見てサーバがファイルを選んでくれる。
178nobodyさん:03/07/28 13:49 ID:mZs5gojb
>>175
our。バージョン古くて使えなければuse vars。
179nobodyさん:03/07/28 13:52 ID:???
>>175
妙な静的変数

{
my $static;
sub hoge {
}
sub hogehoge {
}
sub hagehage {
}
}
180nobodyさん:03/07/28 14:33 ID:MPvwsvte
画像掲示板をつくっています。参照ボタンでローカルパソコン内の画像を選んだあと、
確認ボタンでその画像がブラウザで確認出来るようにしたいのですが、
良い方法ないでしょうか?
181nobodyさん:03/07/28 14:34 ID:???
>>180
帰れ。
182nobodyさん:03/07/28 14:41 ID:???
>>167
> 16[4-5]のモジュールは使い方よくわかりませんでした。

使えるようになると便利だぞ。
面倒かもしれんけど、ぐぐってみるなりして使いこなせ。


>>180
送信する前にプレビューってことか?
JavaScriptでフォームからファイルパス取って、IMGに埋め込むとか。
できるかわからんけど。
とりあえずスレ違いなので詳細はそれ系スレで。
183nobody:03/07/28 21:25 ID:0jEUdWDa
ス…スマン。大学のperlの課題で四苦八苦している者です。
「じゃんけん」ができるプログラムを作りたいんだけど
何かいい方法ありますか?
当方かなり初心者なんで
print"〜";#って文字を出力することしかできないんですけど。
えーと質問の意味がわからなかったらスルーしてもらってもかまいません。
184あぼーん:あぼーん
あぼーん
185nobodyさん:03/07/28 21:53 ID:???
>183
まずフローチャートを書け。
それ以降は大学で聞け。
186nobodyさん:03/07/28 21:58 ID:???
>>183
宿題は自分でやろうね。
187nobodyさん:03/07/28 22:03 ID:???
print "じゃんけん\n";
sleep(1);
print "ぽん\n";
188あぼーん:あぼーん
あぼーん
189nobodyさん:03/07/28 22:10 ID:TipKdKzd
じゃんけん・・・
ランダムに3つの中から選ぶプログラムを作って
自分で入力した文字と比較。
結果を出力。でいいんじゃない?
190あぼーん:あぼーん
あぼーん
191nobodyさん:03/07/28 22:25 ID:???
>>183

print "じゃんけん(1=ぐー、2=ぱー、3=ちょき)\n";
<>;chop;
$a = int rand(3)+1;
$hoge = (($a == 1 && $_ == 2) || ($a == 2 && $_ == 3) || ($a == 3 && $_ == 1)) ? '勝ち' : '負け';
print $hoge,"\n";

# お粗末
192nobodyさん:03/07/28 22:47 ID:???
183は課題がでるたびにここで聞くのかね。
193nobodyさん:03/07/28 22:53 ID:???
print "じゃんけん(1=ぐー、2=ぱー、3=ちょき)\n";
<>;
print ('勝ち', '負け')[int rand 2];
194nobodyさん:03/07/28 23:08 ID:???
>>193

   /⌒ヽ
  / ´_ゝ`)時間的に、ここ笑わないといけないので、笑いますよ・・・
  |    /
  | /| |
  // | |
 U  .U
195183:03/07/28 23:46 ID:xYLAJnZK
課題今日中にメールで提出ということだったんで…出しました。
みなさんいろいろ案出していただいてありがとうございます。
結局自分の力不足で課題内容変えちゃいましたけど。
(みなさんの案は今後参考にさせてもらいます)
>192
今日始めてここに来たんですけど
まぁ課題が出るたびにここで聞くのと同じような根性の持ち主です。

とにかく…評価はCにケテーイぽ(つД`)
196あぼーん:あぼーん
あぼーん
197nobodyさん:03/07/28 23:49 ID:???
>>183 っていうか、おまえ。答え丸写しじゃねぇかw
198nobodyさん:03/07/28 23:56 ID:???
あいこが出ないコードを提出。-10点
199あぼーん:あぼーん
あぼーん
200183:03/07/29 00:01 ID:BcdoPCM8
>197
いやしてないし。むしろじゃんけんにしなかったし。
ウザイのでそろそろ逝きます。
201nobodyさん:03/07/29 00:03 ID:???
まあ、はじめから丸写しするつもりで聞いたんだろう。
自分の期待する答えがなかったからしなかった(というかできなかった)だけで。
202nobodyさん:03/07/29 00:25 ID:???
そういうやつのためにも時々ウソを教えないとね
試したらわかる程度に軽いやつで
203nobodyさん:03/07/29 01:49 ID:???
それにしても 183 よ。そんな事を2ちゃんねるで聞くのもどうかと思うぞw
204168:03/07/29 07:41 ID:???
>>174
ありがとうございました。

Content Negotiationというのがあるとは全く知らず、そのまま表示できたのでびっくりです。
板違いでしたね(汗)
全部圧縮して、リンク先のアドレス変えるだけで問題はすべて解決しました。

大変感謝しております。
205nobodyさん:03/07/29 08:56 ID:pmxt/hz7
crontabで、AM6:00,AM7:00に1回起動設定しているとして、
cgiの中でlocaltimeで、6:00と7:00で処理を分けているんですけど、
crontabの時計とlocaltimeの時計は完全に一致しているんでしょうか?
スクリプトの中で6:00丁度だったらA、7:00丁度だったらBとやっても
crontabが起動した時間が5:58とかだったらAの処理が行われないと思うんです。
206nobodyさん:03/07/29 10:14 ID:???
cgiがperlで書かれているとすれば。
perldoc を調べなさい。
それから
man crontab。
207nobodyさん:03/07/29 10:15 ID:???
ちがう。
crontabはcrontableのことだ。
要するにcronの設定ファイル(といっていいかどうかわからんが)

man cron
をすべき。
208nobodyさん:03/07/29 10:21 ID:???
ついでにいうと、localtimeじゃなくてtimeだよな。
209nobodyさん:03/07/29 10:39 ID:???
>>205
6:00丁度に起動されたとしてもlocaltimeとるまでにタイムラグがある。
ちょっと考えればわかりそうなもんだが。
210nobodyさん:03/07/29 10:52 ID:???
man cron ってヤラスィ〜響き

(*´Д`*) マンコロン・・・
211あぼーん:あぼーん
あぼーん
212nobodyさん:03/07/29 11:44 ID:pmxt/hz7
man cronってなんざんすか?
213nobodyさん:03/07/29 11:47 ID:MFa+8P58
一定時間ごとにある処理をさせますが、特定のキー入力で抜けます。
<STDIN>; ではうまくいかないので下のコードのようにしましたが、
2つ目のwhileを無駄に回さなくてもいいようにする方法はありますかね?
今のところsleepを入れるくらいしか思いつかないです。

sub {
  my $sig = 0;
  local $SIG{INT} = sub {$sig = 1;};
  while (1) {
    # ここに$interval(分)ごとにする処理
    while (time() % ($interval * 60)) {
      sleep (1);
      return 1 if($sig);
    }
  }
}
214あぼーん:あぼーん
あぼーん
215nobodyさん:03/07/29 12:00 ID:???
>>213
1 TTYをnon-canonicalモードにする。
プラットフォーム依存。モジュールあるかも。
2 特定のキーでシグナル発生させる。
216nobodyさん:03/07/29 12:03 ID:???
>>213
getc じゃ駄目なの?
217nobodyさん:03/07/29 15:52 ID:???
ttp://x68000.startshop.co.jp/~68user/net/http-2.html
を参考にhttpクライアントを作ってみたんですが
どうも404が返ってくるところが多くて不思議なのですが
どういうことなのでしょう?
例えば参考にした上のページは見れるんですが
自分のISPのページは
Http://host/~user/index.html でリクエストすると404で
Http://host/~user/ なら大丈夫なんです。
(勿論ブラウザなら両方OKです。)

ソースへ
print SOCKET "Host:$host:$port\r\n";
を追加したら大抵取得できる様になったんですが
それでも100%でないので納得できないのです。
何が不足しているのでしょうか?
サッパリ意味が解らないのでご教授お願いします。
218nobodyさん:03/07/29 16:04 ID:???
>>217
バーチャルホスト
219217:03/07/29 16:39 ID:???
>>218
バーチャルホストへは
print SOCKET "Host:$host:$port\r\n";
で対応できているんですよね?

何だか原因はスペルミスだけだった気がしてきました。
220nobodyさん:03/07/29 16:53 ID:???
>>218 (゚Д゚)ハァ?

>>217 サーバーの DirectoryIndex (クライアントがディレクトリをリクエストしたときに調べるリソースのリスト)確認しろ。
221nobodyさん:03/07/29 17:35 ID:???
>>220 (゚Д゚)ハァ?
>(勿論ブラウザなら両方OKです。)
222nobodyさん:03/07/29 19:38 ID:71pkcqEp
>>220
(゚Д゚ )ハァ?
それで返ってくるのは403だろ。氏ねや
223あぼーん:あぼーん
あぼーん
224nobodyさん:03/07/29 19:55 ID:???
connect の後に SELECT してるけど、代わりに autoflush SOCKET (1); は?
225nobodyさん:03/07/29 21:36 ID:???
>>213
alarm使って、キー待ちにしたらどう?
time値の0秒ジャストで動かせないけど。

local $SIG{ALRM} = sub { die 'timeout' };

...
my $c = &keywait(1);
...

sub keywait
{
my $interval = shift;

eval{
alarm($interval*60);
<>;
alarm(0);
};
if ($@){
alarm(0);
($@ =~ /timeout/) or die;
return(0);
}

return(1);
}
226nobodyさん:03/07/29 21:40 ID:???
>>217
プロトコルをHTTP/1.1にしたら?
227nobodyさん:03/07/29 23:46 ID:Y5f15xmJ
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
#$buffer = $ENV{'QUERY_STRING'};

@pairs = split(/&/, $buffer);
foreach (@pairs) {
($key, $val) = split(/=/);
$in{$key} = $val;
}

ここまでやった後で連想配列の中身を見る方法を教えてください。
どんなkeyが入ってるか知りたいのです。それによって処理を分岐するので。
初歩的な質問ですみません。
228nobodyさん:03/07/29 23:48 ID:???
>>227
そのままだけど、keys。
229nobodyさん:03/07/29 23:48 ID:???
keys
230nobodyさん:03/07/29 23:48 ID:???
>>227
foreach $key ( sort( keys %ENV ) ) {
print "$key = $ENV{$key}\n";
}
231nobodyさん:03/07/29 23:49 ID:???
>>230
ENV???
232nobodyさん:03/07/29 23:56 ID:???
>>227
print map { "$_ : $in{$_}\n" } keys %in;
233あぼーん:あぼーん
あぼーん
234nobodyさん:03/07/30 00:01 ID:KKMTj9U0
分解数がわからないsplitの場合、

$name = 'c:\windows\system32';

$i = 0;

while($name =~ /\\/g){
$i+=1;
}

@match = ();
for($n=1; $n<=$i+1; $n++){
$a = '$path'.$n;
push(@match,"$a");
}

@match = split(/\\/,$name);

foreach $col (@match){
print "$col<br>";
}

がんばってこんな感じになりました。
けっこう長いです・・サブルーチンになりそう・・・
もっと簡潔な方法あれば教えてください。
235234:03/07/30 00:06 ID:KKMTj9U0
すんません。
$a = '$path'.$n;
push(@match,"$a");
これは、
push(@match,"%n");に変えます。

配列の全値をjoinでスカラ($match)に代入
そして、($match) =split・・・・
ってやるつもりだったんですが、$matchが展開されないってことに気づいて、
リファレンス良く見ると、そのまま配列でsplitできることがわかって、
$pathっての消すの忘れてました。
236234:03/07/30 00:06 ID:KKMTj9U0
× %n
○ $n
何回もすいません。
237nobodyさん:03/07/30 00:08 ID:???
>>234

>>1
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

これを読め。結局何がしたのが伝わってこない
238nobodyさん:03/07/30 00:08 ID:???
×結局何がしたのが伝わってこない
○結局何がしたいのか伝わってこない
239234:03/07/30 00:09 ID:KKMTj9U0
>>237
簡潔な方法がないか聞きたかったんです。
けっこう長いから・・・
240nobodyさん:03/07/30 00:10 ID:???
>>239
簡潔な「何をする」方法なのか?
241234:03/07/30 00:10 ID:KKMTj9U0
ここは、エラーがどうしても消えなくて、助けをほしい人がくるスレなんですね。
簡略なソースを求めるスレでないんですね。
どうもすいませんでした。
242nobodyさん:03/07/30 00:12 ID:???
>>241
分かればよろしい。
243nobodyさん:03/07/30 00:13 ID:???
どんな結果を言葉で示してくれないと答えようがない。
ただ単にソースをダラダラ書かれても困るだけ。
このスレの解答者はソース解析屋でもないんだから
244あぼーん:あぼーん
あぼーん
245nobodyさん:03/07/30 00:14 ID:QkXS28T1
デバッガ付きのPerl処理系ありますか?
ErrorメッセージがInternal Server Errorだけじゃ捗りませんよね。
246nobodyさん:03/07/30 00:15 ID:???
perl -d
247234:03/07/30 00:17 ID:KKMTj9U0
>>243
ええと、このソースは、フォームから「文字列」と、「分解の基準になる文字列」(なんか分かりにくいかな・・
split(/aa/,"")←ここのaaの部分です。
で、フォームからだと、だれがどんな文字列もってくるかわからないでしょ?
だから、当然分解数も違う。
それで、分解数がはじめから分からなくても、ちゃんとsplitで分解する
っていうのが上のスクリプトなんです。


あぁ、説明下手で伝わらなかったらゴメン
248234:03/07/30 00:20 ID:KKMTj9U0
なんかダラダラ書いてるから日本語おかしくなってる・・・
4行目の「で」は「受け取って、splitで分解するスクリプトなんです。」ですね・
なんか日本語変になってる
249nobodyさん:03/07/30 00:20 ID:???
日本語の解析も必要みたいです。
250nobodyさん:03/07/30 00:22 ID:???
>>248
とりあえず、年齢とPerl歴、日本語歴をお書きになってください。
251234:03/07/30 00:24 ID:KKMTj9U0
ごめんなさい。書き直します。


>>234のスクリプトは、フォームから「文字列」と「分解の基準になる文字」を受け取って、
それをsplitして表示する、というものです。

でも、フォームから送られてくるのは人によってまちまちだし、当然分解する数も違うので、はじめっから
($a,$b) = split(/$bunkaimojiretu/,"$mojiretu");なんてできません。
だから、上のようにまず、whileで「分解の基準になる文字列」の数を調べて、
次に、その数+1個分の値がある配列を作ります。
そして、その配列を分解

こうすれば、分解数がわからなくても、ちゃんとsplitしてくれる、そういうスクリプトです。
252234:03/07/30 00:26 ID:KKMTj9U0
それで、自分なりにがんばってみて>>234ができあがったわけなんですが、
どうもソースが長いなぁ、と思い、簡略化できないかと聞いてみた次第です。

お手数かけてすみません。これでマシな日本語になりましたか?
253nobodyさん:03/07/30 00:27 ID:???
>>251
なんでそんなことをする必要があるのか全然わからん。

@pairs = split /\&/, $STDIN;
foreach ( @pairs ) {
($k, $v) = split /=/;
$form{$k} = $v;
}

これでは何故いかんのか?
254nobodyさん:03/07/30 00:29 ID:???
>>234

$name = 'c:\windows\system32';

foreach (split(/\\/,$name)) {
print "$_<br>";
}

もう飽きた。
255nobodyさん:03/07/30 00:29 ID:???
>>252
うん。よくわかった。
256234:03/07/30 00:29 ID:KKMTj9U0
$STDIN???
僕がやっているのは、ブラウザからなんですよ。DOS窓じゃないんです・・・
257213:03/07/30 00:30 ID:???
収束してから書き込もう…
258nobodyさん:03/07/30 00:30 ID:???
split(/\\/,$name)は\で区切った配列になるのだ。
259234:03/07/30 00:30 ID:KKMTj9U0
>>254
えと、この場合は、フォームからの文字列が、たとえば「c:\windows\system32」の場合の話ですよ〜
ってことです。
なにも言ってなくてスイマセン。
260234:03/07/30 00:31 ID:KKMTj9U0
そうですね。この場合は、ちゃんと
split(/$cut/,$name)くらいにしておけばよかったです。
誤解を招くようなこと書いてすいません。
261nobodyさん:03/07/30 00:33 ID:???
>>260
おまい、どんどん頭よくなっていくなぁ・・。
262234:03/07/30 00:33 ID:KKMTj9U0
すいません。
初めの一行に「フォームからの文字列(c:\windows\system32)、分解の基準の文字(\)の場合の例」
と、一言かいておければよかったです。
無駄なレスさしてほんとに申し訳ないです。。
263nobodyさん:03/07/30 00:34 ID:???
>>256
その台詞で貴様の技能がどの程度かよくわかった。
標準入力からだろうがブラウザからだろうが入力は入力だろうが。応用の利かない阿呆が。
264nobodyさん:03/07/30 00:36 ID:???
>>263
はぁ、アフォだ。STDINなんかcgiで使えるわけないだろ、氏ね
265234:03/07/30 00:37 ID:KKMTj9U0
>>263
え?STDINって、DOS窓じゃなかったんですか?
フォームのデータは、ReadParse使って、変数に格納してる状態なんですけど・・・
266234:03/07/30 00:37 ID:KKMTj9U0
もしかして、POSTの場合の、フォームの受け取りのことを言っていたんでしょうか?
267nobodyさん:03/07/30 00:38 ID:???
264nobodyさんsage03/07/30 00:36 ID:???
>>263
はぁ、アフォだ。STDINなんかcgiで使えるわけないだろ、氏ね
268nobodyさん:03/07/30 00:40 ID:???
234 の混乱ぶりが面白いw
269234:03/07/30 00:43 ID:KKMTj9U0
253の言いたいことがようやくわかりました。
標準入力、GETの場合は?以降を、分割するってことを言っていたんですね。
そういうことではないんです。
フォームから、好きな文字列とキーの文字を送ってもらって、
そのキーで「文字列」を分解するってことです。
GETの場合でいうと、
?moji=c:\windows\system32&key=\
それで、この「\」で「c:\windows\system32」を分解したいんです。
?moji=aiueo,kakikukeko,sasisuseso&key=,
こんなことです。
270nobodyさん:03/07/30 00:46 ID:???
>>269
だから応用できるだろって言ってるだろ。
271nobodyさん:03/07/30 00:47 ID:???
俺、未だに 234 が何をしたいのか良く解らないんだけど…

> 初めの一行に「フォームからの文字列(c:\windows\system32)、分解の基準の文字(\)の場合の例」

要は、ある文字列を分解の基準の文字で分解してリストにしたいって事?
split でいいんじゃねーの?って思うが、肝心な「期待しているリストにはこう入って欲しい」
みたいなこと書いてねーからさっぱり解らん
272nobodyさん:03/07/30 00:53 ID:???
234のしゃべりとスクリプトがそっくりでおもしろい。
273234:03/07/30 00:53 ID:0qjcwLeT
>>271
そういうことです。
それで、「ある文字列」も、「基準の文字」も、「何分割される」かも、分からない、という状況で、
どういうスクリプトで処理したらいいかといろいろ試行錯誤して、上のスクリプトができました。
それで、このスクリプトは正しいのか?、もっと簡単にできるんではないか?と思いまして、聞いてみました。
274nobodyさん:03/07/30 00:56 ID:???
で、@match にはどう入って欲しい訳?
君はその事について未だ何も記述してないね
275234:03/07/30 01:00 ID:0qjcwLeT
>>274
@match = split(/$kijun/,"$data")って処理されるわけですから、
基準の文字の数+1が必要な値になりますよね?
たとえば、\で切る、データが「a\b」だったら、2個という具合で。

だから、
@match = ();
for($n=1; $n<=$i+1; $n++){
push(@match,"$n");
}
ここで、その数だけ、配列の値を・・・・・・・・・・
あら、もしやこれ不要なんでは・・・
まさか、いらない・・・
あぁ、いらないんだ。。。
そーだったのか、アフォなことをした・・・・
276234:03/07/30 01:02 ID:0qjcwLeT
あっはっは


$name = 'c:\windows\system32';


@match = split(/\\/,$name);

foreach $col (@match){
print "$col<br>";
}

これでいけたわ
すまんな、
277254:03/07/30 01:04 ID:???
>>276
それ俺が書いたまんま…
278234:03/07/30 01:05 ID:0qjcwLeT
いやぁ、@matchってのは、splitで分割する数だけ値をいれてやらないかんと思っとったんよ。
でも、良く考えると、
push(@match,"$n")って、値がはいってるのに、
なんでc:とか変わってるのかと思ったら

あっはっは
279nobodyさん:03/07/30 01:05 ID:???
>>277
ご愁傷様……(;´Д`)
280234:03/07/30 01:06 ID:0qjcwLeT
よーするにだ、
@aaa = split(/$aa/,$bb)
ってすりゃぁ、
勝手に@aaaの値の数が調節されるんだな

あっはっは
すごいな、パールって

あっはっは
281234:03/07/30 01:08 ID:0qjcwLeT
ほんとにすまんな、みんな
あっはっは

えらい迷惑かけちまってあっはっは

パールってのはすごい言語だ
あっはっは

俺としたことが・・

みんなこれ知っててだまってたんだろ?

まったく、恥かくぜあっはっは
282234:03/07/30 01:10 ID:0qjcwLeT
しかも>>254のって
foreach (split(/\\/,$name)) {
だったんだな
なんかほかの物に見えたよ。

この時点で答えでてんじゃん
あっはっは
俺ってどんくさいな
283nobodyさん:03/07/30 01:11 ID:???
次の方お待たせ。

284nobodyさん:03/07/30 01:11 ID:???
アハハ吊られたね。

では次の質問どーぞ!
285nobodyさん:03/07/30 01:16 ID:???
>>282
おまい、Cのやりすぎだ。
286234:03/07/30 01:19 ID:0qjcwLeT
確かにそうかも、
授業でCあるからな・・
287nobodyさん:03/07/30 01:19 ID:???
>>286
配列の大きさとか初めに宣言しなくていいのばペールですよ^^;
288nobodyさん:03/07/30 01:26 ID:???
すみません、「<>;」ってどういう意味なんですか?
289nobodyさん:03/07/30 01:32 ID:???
<ARGV>
290nobodyさん:03/07/30 01:33 ID:???
<^ ^;>
291nobodyさん:03/07/30 01:58 ID:???
>>290
おぉ、コンパイルとおるぞ。
292213:03/07/30 01:59 ID:???
>>215 ぐぐったけど敷居が高そう。今後の課題にします。
>>225 <>で入力完了を待ってシグナルを発生させるみたいです。
293nobodyさん:03/07/30 02:14 ID:???
>>288
@ARGVがあれば、@ARGVが行入力演算子に割り当てられ、
@ARGVが空ならSTDINが割り当られる。

代入先がないので、読み出して捨ててる。
STDINが割り当てられたのなら、STDINを一行読み飛ばしている。
STDINにターミナルデバイスが割り当てていれば、一行待って、中身を捨てるということに。
(単なる改行待ち)

>>292
キーボードに関してはperldoc -q keyで、faq5辺りに情報が載ってますよ。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq5.html#How_can_I_read_a_single_characte
294292:03/07/30 03:18 ID:???
>>293 謝謝 ちと勉強してみます
295nobodyさん:03/07/30 03:25 ID:JGELpVxk
cgiproxyの動作は
アクセスがあったらその間だけ
proxyサーバとして動作させ、目的のページを吐き出したら
proxyサーバを終了させる。といった感じですか?
それともproxyサーバとcgiproxyは別の原理ですか?
296nobodyさん:03/07/30 03:31 ID:chNZYbR6
すいません。
Perlのことで質問したいのですが。
変数名の一部に変数の中の数字を埋め込んで
その変数名を代入したいのですが
どのようにいくのでしょうか?
ちょっと、言葉では分かりにくいので例を挙げると
例えば、$a1 $a2 $a3という変数があって
$bの中に1〜3のいずれかの数字が含まれているとし
この$bの中の数字を変数名として使いたいのです。
これを
$c = '$a' . "$b";
といった感じでやれば$aの方はそのまま文字列として出て
$bの方は変数の中身が展開されて出ると思ってやってみたのですが
エラーが出てしまいます。

どなたかお助けください。
よろしくお願いいたします。
297あぼーん:あぼーん
あぼーん
298nobodyさん:03/07/30 03:57 ID:???
print ${'a'.$b};
299nobodyさん:03/07/30 06:20 ID:???
>>296
ハッシュか配列を使う。
300nobodyさん:03/07/30 10:34 ID:???
↑答えもう出てるだろ( ´,_ゝ`)プッ

300 GET ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
301nobodyさん:03/07/30 10:34 ID:???
こういう、変数名自体を動的に云々っていう質問よく見かけるけど、
なんでそういう発想になるんかね。
他の言語じゃそういう質問見かけないんだが(ないことはないと思う)。
やっぱソフトリファレンスのせいなんだろうか。
302nobodyさん:03/07/30 11:00 ID:???
>>296
> すいません。
> Perlのことで質問したいのですが。
> どのようにいくのでしょうか?
> ちょっと、言葉では分かりにくいので例を挙げると
> どなたかお助けください。
> よろしくお願いいたします。

読みにくくなるだけだから無駄に6行も余計なことを書くな
303nobodyさん:03/07/30 11:03 ID:???
>>301
リファレンスとかじゃなく、単に発想がおかしいだけなんじゃない?
304nobodyさん :03/07/30 11:36 ID:???
ソフトリファレンスは悪です・・・

まぁ、ちゃんと変数の整理が出来てないつーのと、変数のスコープを理解してないってことじゃないだろうか・・・
305nobodyさん:03/07/30 11:53 ID:???
Perlはその辺を逐一理解してなくても扱える言語だからな。
それはPerlの優秀な点である。
その分ユーザーのレベルが下がるのは仕方がない。
306nobodyさん:03/07/30 12:32 ID:???
下手にソフトリファレンスなんてもんがあるせいで、配列やハッシュの有効な使い方を
理解しないまま進んでしまうんじゃないかな。
307296:03/07/30 13:22 ID:VqnJP0e8
質問にお答えくださってありがとうございます。

print ${'a'.$b};
だとスカラ変数だとうまくいったのですが
配列の変数だとうまくいかないようです。

$sen1[] $sen2[] $sen3[]という変数があって
$randaに1〜3という値が入ていて
print("{${sen$randa}[$i]}");
のように書いたのですが、どうもうまくいかないみたいです。
308nobodyさん:03/07/30 13:43 ID:???
>"{${sen$randa}[$i]}"
ヽ(*`Д´)ノ むちゃくちゃやんけー!
309nobodyさん:03/07/30 14:05 ID:???
>>304
モジュールまたがってソフトリファレンス使ってるソースを見たことがある。
最初どこから変数が湧いてくるのか理解できなくて気絶するかと思った。
……って、これはマ板ネタか。

>>307
勉強しなおした方が良いと思われる。
310296:03/07/30 14:09 ID:QHsgEgDp
>>308-309
Perlは今回初めての仕様で、まだ慣れてないんで
お許しください。
外の括弧で囲めば、配列の[]が文字列として認識されずに済むと
聞いてやってみたのですが
もしかして、これはPHPの文法でしょうか?
311296:03/07/30 14:10 ID:QHsgEgDp
仕様→使用でした
312あぼーん:あぼーん
あぼーん
313nobodyさん:03/07/30 15:13 ID:???
ほれ、
print ${'sen'.$b}[$i];

あと >>299 >>304 >>306 >>309 を10回ずつ声を出して読んで!!
お帰りはこちら ↓
http://www.google.co.jp/
314nobodyさん:03/07/30 15:17 ID:???
>>307
> $sen1[] $sen2[] $sen3[]という変数があって

ってのは@sen1, @sen2, @sen3ってことか?
perlの配列がわかってれば、こんな書き方にはならないと思うのだが。

${'a'.$b}という回答を貰っておいて${sen$randa}[$i]はないだろ……。

print ${'sen' . $randa}[$i];
315nobodyさん:03/07/30 16:38 ID:Nvxneeyi
初心者質問失礼致します。

if(!open(FH, ">>file")){ print 'file open error'; }
else{
  flock(FH, 2);
  print FH 'abcde';
  close(FH);
}

このように追記モードの場合、flockは必要になるの
でしょうか。
316nobodyさん:03/07/30 16:50 ID:???
うん
317あぼーん:あぼーん
あぼーん
318nobodyさん:03/07/30 17:09 ID:???
>>315
モードに関係なく必要なときは必要だと思うが。
319nobodyさん:03/07/31 03:15 ID:???
>>318
お返事有難うございます。
ロック使うことにしました。
有難うございました。
320nobodyさん:03/07/31 05:53 ID:INH5PtXx
readline,<FH>を使ってデータを取り込みたいのですが、
上(最初)から順ではなく、下(最後)から読ませることは出来ませんか?
321nobodyさん:03/07/31 06:32 ID:???
>>320
無理ぽ
あとはPerlメモ嫁
322nobodyさん:03/07/31 07:08 ID:???
了解 seekで頑張ります
有難うございました。
323nobodyさん:03/07/31 10:39 ID:???
unshiftしたらえんちゃうんかと
324nobodyさん:03/07/31 10:44 ID:???
>>323βακα..._〆(゚▽゚*)
325あぼーん:あぼーん
あぼーん
326あぼーん:あぼーん
あぼーん
327あぼーん:あぼーん
あぼーん
328あぼーん:あぼーん
あぼーん
329nobodyさん:03/07/31 12:08 ID:???
use Time::Local;

$t = time;
print "UTC =", timegm( gmtime( $t ) ), "\n";
print "UTC =", timelocal( localtime( $t ) ), "\n";

gmtime とか localtime で返してくる値を time で
返す値の形式に戻すコードってこんなんでいい?

テストしたら一応2つとも同じ値返す様になったけど…。
330nobodyさん:03/07/31 12:56 ID:???
希望通り動いてんのならここで聞かなくてもいいでしょ。
誰かのお墨付きが欲しいの?
331nobodyさん:03/07/31 13:18 ID:???
いや、ちょっと自信が無かっただけ…。
UTC の解釈もチョット間違ってたし<自分
332nobodyさん:03/07/31 13:32 ID:???
戻すと言ってもそれじゃ無意味だしな
333あぼーん:あぼーん
あぼーん
334nobodyさん:03/07/31 13:55 ID:???
$t = 10.2 - 10.0
のような小数計算で$tに正しく答が代入されないのはなぜですか?
335nobodyさん:03/07/31 14:11 ID:???
↑確認の方法どうやってるの?それが、間違ってるような気がするが
336nobodyさん:03/07/31 14:19 ID:???
>>334
不動小数点数の精度の問題ですね。
一般に小数の最後の桁は信用できません。
337336:03/07/31 14:22 ID:???
浮動小数点です。
338334:03/07/31 14:29 ID:???
>335
代入して、htmlに書き出すだけです。

>336
そうなのですか…
遠回りですが整数でやることにします。ありがとうございました。
339nobodyさん:03/07/31 14:55 ID:???
cgi内部で外部cgiファイルを起動する方法を教えてください。

HTMLだと、<img>タグを使ってたのですが、
<img src="./hoge.cgi">

CGIファイルだと、これがうまく起動されないわけです。
print "<img src=\"./hoge.cgi\">";

どうしたら良いでしょうか?ご教授お願いします。
340nobodyさん:03/07/31 15:58 ID:???
>>339 さま、>>1 をお読みください
341nobodyさん:03/07/31 16:11 ID:???
>>340
当たり前ですがエラーはでません。
起動したいファイルから吐き出しファイルが更新ができないだけなので、
どう質問したらいいでしょうか?よろしくお願いします。

って340じゃ無理か。(w
342nobodyさん:03/07/31 16:20 ID:???
>>339
CGIから別のCGIを呼び出して、その出力を利用したいという事か?
お前の質問からそれを読み取るのは著しく困難だし、態度悪いから教えない。
343nobodyさん:03/07/31 16:54 ID:???
>>339
バカだね〜
344nobodyさん:03/07/31 17:07 ID:???
おちえない
345nobodyさん:03/07/31 17:22 ID:???
>>341 さま、>>1を1200回ほどお読みください
346nobodyさん:03/07/31 20:52 ID:???
>>339
いやもう見てて哀れだよ。
自分がたたかれてる理由がわからない奴ってのは。
しかしここで教えるとためにならんしなあ。
辛いところだ。
347nobodyさん:03/07/31 21:26 ID:???
だいたいそのCGI、直接叩いてちゃんと出力するんかい。
んでエラー吐かんのは当たり前なんかい。
ちゃんと動かんかったらエラー吐くようにしとらんだけやんか。
それがあんたにとって当たり前なら、あんたの書いたコードは書いた通り
正常にうごいとるわけで、プログラムはなんも悪くないとオモーヨ。
はぁ
348nobodyさん:03/07/31 21:31 ID:???
おもろい
349nobodyさん:03/07/31 21:44 ID:???
自演ウザ。(*^。^*)
350nobodyさん:03/07/31 22:18 ID:???
ちょっとした煽りにいちいちキレてるような奴は、真面目に回答してくれた人に対しても
そういう態度を取る可能性があるからね。
思い通りに動作しなかったり、質疑応答が長引いて耐え切れなくなったときに。

お互いがイヤな気持ちにならないためにも、そしてスレのためにもそういうアフォな質問者は
さっくりと無視しましょう。
351nobodyさん:03/07/31 22:31 ID:???
if ($a>1)
  if ($a<10)

これを

if ($a>1 && $a<10)

と書くような技法を何ていうんでしたっけ?知ってる人教えてください。
352あぼーん:あぼーん
あぼーん
353あぼーん:あぼーん
あぼーん
354nobodyさん:03/07/31 22:47 ID:???
自演うぜー。まじで。
いやなら無視すりゃいいのに。
355nobodyさん:03/07/31 22:57 ID:???
結合演算子を使う技法w
356nobodyさん:03/07/31 23:20 ID:???
ていうか名前なんてあるのか
357nobodyさん:03/07/31 23:26 ID:???
2行を1行にする技法
358nobodyさん:03/07/31 23:46 ID:???
>>354
自演?
心配すな。
おまいも端役のひとりじゃ
359nobodyさん:03/08/01 00:33 ID:???
>>354
>>339必死だな。
360nobodyさん:03/08/01 04:02 ID:???
>>351
トリビア技法
361nobodyさん:03/08/01 04:05 ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
362nobodyさん:03/08/01 04:09 ID:???
ここって初心者スレのワリにレベル高いんですけど。
363nobodyさん:03/08/01 04:55 ID:???
本漁ったりググって分かる疑問は質問するまでもないからでしょ
364nobodyさん:03/08/01 05:59 ID:???
人に聞いているうちは初心者。
たいていのことを自分で解決できるようになれば、まずは初心者脱出ってこと。
365nobodyさん:03/08/01 08:23 ID:???
364に勝手に追加

自分で調べる前に聞いているうちは一生初心者にすらなれない。
366nobodyさん:03/08/01 10:15 ID:???
馬鹿高い本を買って自己解決する
安めの本を買って、足りない部分は周りを利用する

どっちが初心者だろうね
367nobodyさん:03/08/01 10:24 ID:???
付属ドキュメントで自己解決する
368nobodyさん:03/08/01 11:27 ID:???
初心者は「初心者の質問板」or「PC初心者板」へGo!!
369nobodyさん:03/08/01 12:33 ID:???
安い本で慣れて高い本で補う。
370nobodyさん:03/08/01 14:09 ID:???
先人たちの築いた知識を上手に利用して上達への近道を選ぶのは初心者でつか?
371 ◆hMJAPH9PWA :03/08/01 14:27 ID:???
> 安めの本を買って、足りない部分は周りを利用する

「周り」が正規のマニュアルを指しているなら賛成だけど、
そうじゃないなら、たとえ馬鹿高くてもちゃんとした本を買うべきだと思う。
372nobodyさん:03/08/01 14:36 ID:???
こんなところで質問するようなやつは上達しないってことだ
373nobodyさん:03/08/01 16:33 ID:???
このスレ腐ったな
374nobodyさん:03/08/01 16:47 ID:???
夏は腐りやすいのでご用心
375nobodyさん:03/08/01 16:48 ID:???
>>364
>>365
だったら初心者は自分で調べるのにわからない香具師ですね
376nobodyさん:03/08/01 17:30 ID:???
>先人たちの築いた知識を上手に利用して上達への近道を選ぶのは初心者でつか?
ヒントを乞う位なら構わんけどさ、自助努力の前にしつこく説明してクレクレ言う椰子は嫌だな。
一々誰かの時間を奪ってまで問答を求めるのは「上手な利用」とは言わない。
先人の知識ってのは先に書籍とかを当たった方がはやい。
それでも詰まったときに質問するのはアリ。
試行錯誤をめんどくさがり過ぎてるのがミエミエな奴はムカツク。
377nobodyさん:03/08/01 17:55 ID:???
>>370
>上手に利用
もちろんまず初めにGoogleだよな???
378nobodyさん:03/08/01 18:06 ID:???
もちろんはじめに燃料投下
379nobodyさん:03/08/01 18:46 ID:???
テンプレに(・∀・)イイ!!質問者の例とイク(・A・)ナイ質問者の例を載せれよ
380nobodyさん:03/08/01 19:50 ID:???
>>379

>>1 に書いてあるじゃん

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。

これに反するような質問が悪い例
381nobodyさん:03/08/01 20:31 ID:???
「例」という日本語が理解できてない香具師はけん
382nobodyさん:03/08/01 20:36 ID:???
1. >>1嫁。
2. 過去ログ嫁。
3. ググるれ。
383nobodyさん:03/08/01 21:25 ID:???
>>379
そんな事言う様なら質問以前の問題だと思う
384nobodyさん:03/08/01 21:44 ID:???
このスレ、ちょっとPerl覚えた厨に汚染されて臭いね。
質問を乞うぐらいにならんと上達せんよ。
まあ、中途半端な奴に言ってもわからかな。はは。
385nobodyさん:03/08/01 21:47 ID:???
Perl覚えたばかりでもいいからさ。
常識や礼儀を覚えてない奴は勘弁してくれ。
386nobodyさん:03/08/01 22:18 ID:???
( ´∀`)ここ2ちゃん
387nobodyさん:03/08/01 22:21 ID:???
>質問を乞うぐらいにならんと上達せんよ。
マトモな質問者なら大歓迎なのれす。
388nobodyさん:03/08/01 22:50 ID:???
>386みたいに思ってる奴は当然、2ちゃんだから嘘を教えられても文句言わないよな?
389nobodyさん:03/08/01 22:58 ID:???
そんなアフォはほっとけや。イチイチ相手にしてるだけ無駄
390nobodyさん:03/08/01 22:58 ID:???
正直、昔のほうが質問者叩きはひどかったわけだが。
普通に質問しても「氏ね」とか言われたもんだ。
ここまで丸くなった2ちゃんでまだ叩かれてるような奴って……
391nobodyさん:03/08/01 23:12 ID:???
>>390
うれしげに・・・とかするなドアフォ
言いたいことあるなら最後まで言ってくれ
392nobodyさん:03/08/01 23:17 ID:???
アフォだらけ
393nobodyさん:03/08/01 23:28 ID:???
>良い回答は良い質問から。
これが見事に実践されてるわけだな。
アフォな質問にはアフォな回答が。
394nobodyさん:03/08/01 23:48 ID:???
初心者だらけだから仕方ないよ
質問するときは内容をよく吟味してから投稿してください。
395nobodyさん:03/08/02 00:46 ID:???
以上、>>339=341の自作自演でした。
396nobodyさん:03/08/02 01:55 ID:O5cg5dSH
perl5ですけど
srand(time|$$);
を付けないと、rand が時間で決まってしまいます。
そんなもんなんですか?
397山崎 渉:03/08/02 02:20 ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
398nobodyさん:03/08/02 03:19 ID:???
>>396
>>1
399nobodyさん:03/08/02 04:25 ID:???
>>396
試してないけど

srand($$|time);

これじゃ、駄目か?w
400ぼるじょあ ◆ySd1dMH5Gk :03/08/02 04:48 ID:???
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
401398:03/08/02 04:51 ID:???
(´・ω・`)<俺、日本語が不自由なんだよ。
402nobodyさん:03/08/02 08:53 ID:???
あげ
403nobodyさん:03/08/02 10:06 ID:???
>>401
ならば、お前が得意な言語でもいいぞ。
404nobodyさん:03/08/02 10:25 ID:???
トッカロピ
405nobodyさん:03/08/02 11:24 ID:???
>>396
while(time%60){
# wait..
}

print rand(), "\n";

をf複数のプロセスで動かしてみたけど、全部違う値になったよ。
WindowsXpHome ActivePerl 5.6.1/FreeBSD Perl 5.8.0/Linux Perl 5.6.1
実行環境と同じ値になる根拠をしめしてください。
406nobodyさん:03/08/02 12:52 ID:???
>>396 の PC は時計が動いていないという罠
407nobodyさん:03/08/02 14:08 ID:???
$tmp = $log[$i];
@dat = split(/<>/, chomp $tmp);

$log[$i] の改行コードを省いたものをカットして @dat に格納して処理したいんですが、
$log[$i] そのものの改行コードは残しておきたく、$tmp を使っています。
これを一発で表現する方法を教えてもらえませんか?
408nobodyさん:03/08/02 14:26 ID:???
一発じゃないが
@dat = split(/<>/, $log[$i]);
chomp $dat[-1];
409nobodyさん:03/08/02 14:28 ID:???
>>408
thx
そちらの方がスマートですね。参考になりました
410nobodyさん:03/08/02 20:02 ID:???
**************************************************
***   Hello! Welcome to the 2ch World!   ***
**************************************************

と表示しようとして、

#!/usr/bin/perl

print "content-type: text/html\n\n";

print "**************************************************\n";
print "***   Hello! Welcome to the 2ch World!   ***\n";
print "**************************************************\n";

とメモ帳に入力してmona.cgiという名前で保存し、tok2.comにffftpを使ってうpしたのですが、
いざ結果を見てみると、

************************************************* *** Hello! Welcome to the 2ch World! ***
*************************************************

と言う風に表示されてしまいます。
どうしたら一番上のような結果にすることができるのでしょうか?
OSはWindowsです。どうかよろしくお願いします<(_ _)>
411nobodyさん:03/08/02 20:41 ID:???
>>410
print "content-type: text/plain\n\n";
412410:03/08/02 20:53 ID:lcThEZov
>>411
レスありがとうございます。
早速、 print "content-type: text/html\n\n";を print "content-type: text/plain\n\n";
に直して再度うpしてみたのですが、結果は同じでした(´・ω・`)ショボーン

誠にあつかましいのですが、他に良い方法は無いでしょうか?
どうかよろしくお願いします。
413nobodyさん:03/08/02 20:55 ID:???
トクトクは勝手にヘッダ情報変えなかったっけ?
414nobodyさん:03/08/02 21:03 ID:???
>>410
HTMLで出力。
415nobodyさん:03/08/02 21:04 ID:84QkeiYe
<a href="http://i.2ch.net/">2ちゃんねる(巨大掲示板)</a>の<a href="http://book.2ch.net/poem/i/">詩・ポエム板</a>
を、
2ちゃんねる(巨大掲示板)の詩・ポエム板
としたい(ようは、リンクを取り除きたい)のですが、
どうすればいいのでしょうか・・・?

わからないながらに、やってみましたが、
$HTMLContents =~ s/<a href="http:\/\/(.*)">(.*)<\/a>/$2/g;
とすると、「詩・ポエム板」しか$2に入りません。。。
416nobodyさん:03/08/02 21:06 ID:???
>415
最小マッチングでぐぐれ。
417415:03/08/02 21:21 ID:84QkeiYe
>>416
さんくすです。
ぐぐりました。

$HTMLContents =~ s/<a href="http:\/\/(.*?)">(.*?)<\/a>/$2/g;

で解決しますた。
418nobodyさん:03/08/02 21:40 ID:lx3eHYOp
CGIとは関係ないんだけど
@INCをコマンドラインで指定して実行する方法ってありましたっけ?
419nobodyさん:03/08/02 21:42 ID:???
すみません。
-Iオプションですね。。。
420nobodyさん:03/08/02 21:43 ID:???
>>418
何故ヘルプを見ない?
-Idirectory specify @INC/#include directory (several -I's allowed)
421nobodyさん:03/08/02 21:43 ID:???
>>418=>>419
おっと失礼。>>420は無視しといて。
422nobodyさん:03/08/02 21:45 ID:???
>>418
どうでもいいが、ここはCGIスレじゃないので一行目は余計。
423nobodyさん:03/08/02 23:01 ID:???
>>412
print "**************************************************<BR>\n";
print "***   Hello! Welcome to the 2ch World!   ***<BR>\n";
print "**************************************************<BR>\n";
424nobodyさん:03/08/03 01:14 ID:???
\nはプロンプトでの改行
htmlの場合はソース内の改行
当然見た目を改行させるには<br>がいる
425412:03/08/03 09:51 ID:???
>>411
>>413
>>414
>>423
>>424
できました! こんなくだらない質問に答えてくれて皆さんどうもありがとう
ございました<(_ _)>
426nobodyさん:03/08/03 12:05 ID:???
>>425
くだらないつーか。text/plainを勝手にtext/htmlと解釈することがあるという
IEの仕様にからむ、とても難儀な問題なのだよ。
427nobodyさん:03/08/03 12:21 ID:???
text/plainにかぎらず、例えばimage/jpegでも中身がHTMLらしければ。
428nobodyさん:03/08/03 13:14 ID:???
あるブラウザは Content-Type: を無視して送られてきたコンテントの
内容を走査して、勝手に振る舞ってるってことかな
429nobodyさん:03/08/03 13:26 ID:???
>>428
そういう糞ブラウザは、image/png でハードディスクの内容を消去するバイナリが埋め込まれていると、
実行しちゃうんだろうなぁ。。。
430nobodyさん:03/08/03 15:35 ID:???

&foo( %ENV, "sample", 123456 );

sub foo
{
my (%a, $b, $c ) = @_;
}

こうやっても、%a $b $c に何も入ってこないよ〜
解らないよ〜ヽ(´Д`;)ノ
431nobodyさん:03/08/03 15:49 ID:???
return
432nobodyさん:03/08/03 15:59 ID:???
リファレンス
433nobodyさん:03/08/03 17:33 ID:???
初心者スレなんだからそんな答え方じゃ解らんだろう

&foo( \%ENV, "sample", 123456 );

sub foo
{
my ($a, $b, $c ) = @_;
my %a = %$a;
}

リファレンスについては http://www.kt.rim.or.jp/~kbk/perl5.005/perlref.html
434nobodyさん:03/08/03 17:42 ID:???
>>433
先越された(´・ω・`)

んじゃ一応補足……$a->{HOGE} とやればハッシュをコピーしなくてもそのまま参照可能。
配列の場合も同じように。
435nobodyさん:03/08/03 17:47 ID:???
>>430
ハッシュは(key1,value1,key2,value2・・・)となってるただの配列。
で、配列は展開されちゃうから、
my %hoge = (1=>'a', 2=>'b');
&foo(%hoge, "sample", 123456);

sub foo {
my (%a, $b, $c ) = @_;
}
と書くと、%aには(1,'a',2,'b',"sample",123456)が入り、$b,$cはからになる。
ちなみにリファレンスを使うのが普通だが、使わないでやりたいなら

my %hoge = (1=>'a', 2=>'b');
&foo("sample", 123456, %hoge);

sub foo {
my ($b, $c,%a) = @_;
}

とすることもできる。
436nobodyさん:03/08/03 17:50 ID:???
>434に補足してみる。
$a->{HOGE}とやると参照渡しになるので、その中身を変更しようとすると実引数の中身も書き変わる。


$ENV{HOGE} = 'hage';
&foo( \%ENV, "sample", 123456 );
print $ENV{HOGE};  # higeが表示される

sub foo
{
my ($a, $b, $c ) = @_;
$a->{HOGE} = 'hige'
}
437nobodyさん:03/08/03 18:23 ID:???
大きいハッシュや配列にリファレンスを使わないと
値を@_へコピーするのに時間がかかる(メモリも喰う)から、
なるべくリファレンスを使うのをお勧めします。
438nobodyさん:03/08/03 18:27 ID:???
>>435
> ハッシュは(key1,value1,key2,value2・・・)となってるただの配列
ソースキボンヌ
つーか、ただの配列だったらでかいハッシュに対して$foo{bar}なんてことは気軽に出来ないから、間違いじゃねーの。
439nobodyさん:03/08/03 19:13 ID:???
配列型(AV)とハッシュ型(HV)は別物。ただし代入はできます。
440430:03/08/03 19:27 ID:???
レスどうもです。リファレンス…奥が深そうですね。

Cで言うと、アドレス(orポインター)渡しみたいなもんですか?
なんか、少し混乱気味ヽ(´Д`;)ノ

>>433-435 さんのレスを参考にコーディングしてみます。
441nobodyさん:03/08/03 19:34 ID:???
>>440
ポインタを理解してるんなら、覚えるのは早いと思うよ。
442nobodyさん:03/08/03 19:45 ID:???
リファレンスを使えるようになったら脱初心者といえますか?
443nobodyさん:03/08/03 20:01 ID:???
>>438
ハァ?
>ただの配列だったらでかいハッシュに対して$foo{bar}なんてことは気軽に出来ないから
何をおっしゃってますか?
内部でハッシュ関数を呼び出して、得られた値をインデックスとして使っているのですよ。
配列はランダムアクセスできるからO(1)じゃん。
444nobodyさん:03/08/03 20:04 ID:???
>>438
ああ、もしかしてC++で言うこところのlist<string>だと思ってるわけ?間違いじゃねーの。
445nobodyさん:03/08/03 20:46 ID:???
>>438
%hogeは配列に見えるし、配列で代入できる。
けれど内部的にはハッシュ。何も問題なし。
446nobodyさん:03/08/03 20:50 ID:???
>>443
「ハッシュは...となってるただの配列」は>>435の発言なのでお間違いなきよう。
447nobodyさん:03/08/03 21:55 ID:HoJp4WnK
html.gzファイルをopenして書き出してもブラウザにうまく表示されません。
Content-typeの表示が問題と思い、
なんとかEncoding:gzipかなんか書いたんですがだめでした。
何が問題と考えられるでしょう。
448nobodyさん:03/08/03 22:08 ID:???
Content-Encoding
449nobodyさん:03/08/03 22:10 ID:???
>>447
>>1を読まないのが問題。
2度と来るなとは言わんが、>>1を1日10回読んで1週間後にまた質問しに来い。
今日はもう書き込むな。
450nobodyさん:03/08/04 12:13 ID:???
>>449
そういうの辞めて無視し。いい加減バカかと。
451nobodyさん:03/08/04 12:20 ID:???
>>450
なら、文句をいわずに、お前が回答しろ。
452nobodyさん:03/08/04 13:19 ID:???
そういうの辞めて無視し。いい加減バカかと。
453nobodyさん:03/08/04 13:53 ID:???
なら、文句をいわずに、お前が回答しろ。
454nobodyさん:03/08/04 14:08 ID:???
コピペやめれ。無視しとき。
455nobodyさん:03/08/04 15:43 ID:???
いらっしゃーい、Perlの「コーディング」で困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
また過去ログも情報の宝庫です。よく探してみましょうね。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

【よくある勘違い】
CGI ≠ Perl です。
判らなければまずはググってみましょう。> http://www.google.co.jp/

【初心者の扱い】
「初心者」だからといっても容赦しませんことよ。ふふふ。
456nobodyさん:03/08/04 15:48 ID:???
Perlのソース同士を比べて書き換えたりしたいのですが(差分を取ったりしたいです)、
差分取るソフトで使いやすくて便利なソフト教えてください。
早速、落としてこれから使っていこうと思いますので。
457nobodyさん:03/08/04 15:54 ID:???
>>456
diff
458nobodyさん:03/08/04 16:03 ID:???
>>457
レスありがとう。
早速HPnなるもいったんですが、分からない…。
459nobodyさん:03/08/04 16:33 ID:???
>>438
ソースはここから落とせるよ。
http://www.perl.com/pub/a/language/info/software.html
460nobodyさん:03/08/04 16:47 ID:???
diff,patchをうまく使えば効率が良くなるんだが、
>>456の想像しているものとは違う気がする。
気の利いたエディタなら普通についてそうだし、
Windows用のを探しているなら「Windiff」で腐るほどヒットする。
# つか捻りの無いソフト名多すぎ:)
461457:03/08/04 16:48 ID:???
>>460
# つか捻りの無いソフト名多すぎ:)
だな。俺もさっき調べてたけどWindiffって名前で色んな奴があるよな。
Cygwin入れてるから別にいいんだけどな。
462nobodyさん:03/08/04 20:00 ID:IP9MFG+G
>>447
>>449
パソコン買い替え中で正確な記述が調べられないのれす。
でも争いが起きているとは驚きますた。
463nobodyさん:03/08/04 20:02 ID:???
>>448
Content-Encoding
これでだと思いますが変わらなかったのですが
鯖が消してしまうとか
464nobodyさん:03/08/04 20:03 ID:???
>>462
環境が整わないのに開発なんかしようとするな。
465nobodyさん:03/08/04 20:06 ID:???
またファイト
漏れもうすぐネカフェの時間なので
466あぼーん:あぼーん
あぼーん
467あぼーん:あぼーん
あぼーん
468あぼーん:あぼーん
あぼーん
469nobodyさん:03/08/04 20:47 ID:???
あるモジュールがあるときでも無い時でも動くようにしたいのですが
負荷を考えると、ループの中でevalを使いたくないのです。
(ループさせる回数がとても多いので。)

現状では、こういう風にやってます。
eval('use Time::HiRes;');
if ( $@ eq undef ) {
  require './lib/bench.pl';
  $HIRES = 1;
  &bench::start;
} else {
  require './lib/dummy_bench.pl';
}

最初にこういう風にしておいて、

続く
470nobodyさん:03/08/04 20:47 ID:???
bench.plの中身は

package bench;
use strict;
use Time::HiRes;
sub start {
 処理ほげほげ
}
sub check {
 処理ほげほげ
}
1;

dummy_bench.plの中身は

package bench;
sub start {
}
sub check {
}
1:

Time::HiResが必要な処理の時は
&bench::check
等として呼ばれるわけですが、最初のevalのチェックで失敗してたら
ダミーのほうが読み込まれているので空のサブルーチンが呼ばれます。

このやり方について2点疑問があります。
1.ファイル名とパッケージ名は同一でなければならないと聞いたことがありますが、これはやってはいけない方法なのですか?
2.もっとスマートな方法があるならご教授ください。
471nobodyさん:03/08/04 20:54 ID:???
オーバーライドすれば?
472nobodyさん:03/08/04 21:40 ID:???
>>469-470
1. 自分が何をやっているのか理解しているなら問題ない。
2. Time::HiRes の存在チェックを bench.pl 内でやれば
  dummy_bench.pl は不要。

#--- Bench.pm ---
package Bench; # 小文字のみのパッケージ名はプラグマ
use strict;
eval ('use Time::HiRes;');
my $EnableHiRes = $@ ? 0 : 1;

sub start;
*start = $EnableHiRes ? sub { ... } : sub { ... };

#--- Bench.pm を使うスクリプト ---
use Bench;
Bench::start();
473469:03/08/04 21:50 ID:???
ありがとうございます。
とてもためになります!

これがきっかけで
ついでにいろいろ気になることも増えてきたので
勉強中です。。
474469:03/08/04 23:32 ID:???
事後報告っす。
サブルーチンの定義自体をevalしないと
モジュールがないとき動きませんでした。

sub start;
*start = $EnableHiRes ?
 eval 'sub { use Time::HiRes; ほげほげ }' : sub {};

#単純にevalの中でuseしてもされてないのでこうするしかないような
475nobodyさん:03/08/05 00:29 ID:???
>>474
何故また use し直すんだ? 下のコードで試してみ。
Time::HiRes が存在すれば実際に sleep した時間が、
無ければ常に 1 が返ってくる。

#--- Stop.pm ---
package Stop;
use strict;
eval('use Time::HiRes qw(usleep);');
my $Enable = $@ ? 0 : 1;
sub stop;
*stop = $Enable ? sub { usleep($_[0] * 1_000_000) } : sub { sleep($_[0]) };
1;
__END__

#--- test.p ---
#!/usr/local/bin/perl
use strict;
use Stop;
local $| = 1;
print 'foo,';
my $wait = Stop::stop($ARGV[0]);
print "bar. ($wait)\n";
__END__
476469:03/08/05 01:03 ID:???
あ、動きました。汁
まじすいませんです。

475のコードでもいろいろやってみました。

evalしないと動かなくなっていたのは
以後の処理のほうに問題があるっぽいです。
あるっぽいというのは、最小限の部分だけコード取り出して
いろいろ試してたら今動いたので。

これからじくーり調べます。
ほんとたすかりました。
477nobodyさん:03/08/05 01:12 ID:???
my $Enable;
if (require Time::HiRes) {
$Enable = 1;
Time::HiRes->import('usleep');
}
478nobodyさん:03/08/05 05:31 ID:???
日本語をブラウザのアドレスバーに入れたとき見たいな文字列に変換したいのですが
具体的には
「日本語 ファイル名テスト用ファイル.txt」を
%C6%FC%CB%DC%B8%EC%20%A5%D5%A5%A1%A5%A4%A5%EB%CC%BE%A5%C6%A5%B9%A5%C8%CD%D1%A5%D5%A5%A1%A5%A4%A5%EB.txt
このようにしたいのです、変換元の日本語はEUC(自身無い)です
今、他人のCGIをいじっているのですがそもそも反対のことをしているのはわかっているのですが
うまく、上の形になりません、何か効率のいい方法はありませんか?
479478:03/08/05 05:33 ID:???
訂正、
>うまく、上の形になりません、
うまく、上の形の文字列が取得できません
480nobodyさん:03/08/05 06:02 ID:???
$str = '日本語 ファイル名テスト用ファイル.txt';
$str =~ s/(\W)/'%'.unpack("H2", $1)/ego;
print $str;
481nobodyさん:03/08/05 10:33 ID:???
use Time::HiRes;

eval('use Time::HiRes;');
は何が違うの?
482nobodyさん:03/08/05 11:03 ID:???
>481
前者は実行できなかった時にコンパイルエラーになる。
後者は実行できなくてもそのまま進む。
483nobodyさん:03/08/05 11:28 ID:???
CGIとして使っているperlなのですが、バグが発生し、
俺の実力では原因が特定出来ないので相談にのってもらいに来ました。

ファイルの書き換えなのですが、日頃正常に動いていた動作で、
突然ファイルの中身が消滅してしまい、「0バイトのファイル」になってしまいました。

記述内では、ファイルを書きかえる処理として、

open(FILE,">$log_file");
print FILE $log_code;
close(FILE);

このようなもの「のみ」あり、$log_codeには必ず何かが代入されています。
$log_code に何かが代入されているのはこのプログラムの基本で、代入されていないわけはありません。
また、今回発生したバグと同一の処理は日頃から普通に行っていました。

また、このファイルは複数人数が書き換える物ではなく、
ID登録した「一人の人物」が書き換えるものなので、ファイルロックなどはしていませんでした。

今回のバグで、ファイルの中身が消滅してしまう原因となったアクセス者は、
「俺自身」です。

プログラム作者は俺自身なので、微妙に動作は怪しいですが、今回のは想定外のバグで、原因がつかめないでいます。
記述を考えても、処理自体のバグでファイルが消えてしまった事は非常に考えにくいのですが、

これは取り敢えず、
「処理自体のバグ」を疑うべきでしょうか?
「システムのファイル書き換えミス」を疑うべきでしょうか?

m(__)m
484あぼーん:あぼーん
あぼーん
485nobodyさん:03/08/05 11:55 ID:???
>$log_code に何かが代入されているのはこのプログラムの基本で、代入されていないわけはありません。
デバッグにおいてこういう思い込みは最大の敵。
必ずテストを行ない、その結果を確認する事。
この場合なら、openの前後の行にprintで$log_codeを表示させてみる。

はっきり言えば、>483の説明だけではなんとも言えない。
情報が少なすぎる。
486nobodyさん:03/08/05 12:24 ID:???
再現できなさそうだしopenの前に
die "Error : \$log_code" unless ($log_code);
とか
これを機にいろいろトラップしとき
487nobodyさん:03/08/05 13:14 ID:???
>>482 ありがと。
eval 文字列でも、eval { }のように、エラートラップできるとは
知らなかった。勉強になりました。
488nobodyさん:03/08/05 14:17 ID:???
>>487
両者の違いは、一気に構文解析がされるかされないか。
eval BLOCKの場合はそうされるので、eval 文字列よりも高速
489483:03/08/05 14:46 ID:???
>>485-486

ありがとうございます。
同じように再現しようと思っても日頃からやってるのと同じ処理なので困ってました。
今度から、ことごとくプログラム内でエラーチェックしておくようにします。

バグの原因が分からない時ってスッキリしないですね。。。。汗
490nobodyさん:03/08/05 16:01 ID:???
一人の人物だからロックしないってありなん?
超高速でダブルクリックして呼び出しかけたらどうなんねん?
491nobodyさん:03/08/05 17:42 ID:???
複数窓開くのもあるな。ってか、そのCGIはゲーム系?



クレス
492名無しさん:03/08/05 18:31 ID:???
>>483
消えて当然かと。
今まで運良くopenとcloseの間で処理が停止しなかっただけ。
493492:03/08/05 18:45 ID:???
>>483
もうひと言付け加えると今まで正常に動いていたのは$log_fileが軽かったから。
$log_fileのサイズが臨界点に達すると、鯖がいい加減にしろと作業途中で職場放棄。
494483:03/08/05 20:36 ID:???
>>490-493
みなさんありがとうございました。
大変参考になりました。

>>492
それを回避するには、ファイルを2つ用意し、バックアップも常に生成しておけ…
と言う事でしょうか?
495nobodyさん:03/08/05 20:58 ID:???
排他制御を知らない奴はCGI作るなという事でFA。
496nobodyさん:03/08/05 21:07 ID:???
Func (・∀・) Anal
497nobodyさん:03/08/05 21:40 ID:???
>>496(・∀・)カエレ!!
498nobodyさん:03/08/05 22:11 ID:???
> $log_fileのサイズが臨界点に達すると
どのくらいよ?
499nobodyさん:03/08/05 22:25 ID:LRtAIpMc
srand(time|$$);
my $et = int(rand(9));
if($et == 3){
srand(time|$$);
$et =int(rand(2)) ;
if($et == 0) {
@
}else{
A
だと、全部@になります。
2つ目の srand(time|$$); を無くすと、
正常になりますが、どうしてでしょうか?
500nobodyさん:03/08/05 22:25 ID:???
>>495
排泄処理…?プロセス事故死の話だろ?

>>494が正解。
ただlogを毎回自動バックアップしてたら壊れたファイルも…ってことになるから、
その変自分のにあったうまい方法を考えておく事。

>>498
perlのメモリ管理はperl自身でやっているから、
つまり鯖によって設定が(ry
501nobodyさん:03/08/05 22:29 ID:???
>>499
なんで2回も初期化してるのかは知らんけど。
randの出しかたはアルゴリズムがマシンによって違うぞ。
俺の勘では、それwin系のシステムで使ってないか?
502あぼーん:あぼーん
あぼーん
503nobodyさん:03/08/05 23:06 ID:???
>>500
> 排泄処理…?
おまるを用意しる!(w
504nobodyさん:03/08/05 23:34 ID:???
>>499
これを動かしてみそ。

srand(time|$$);
my $base = rand;
print "base = ", $base, "\n";
srand(time|$$);
print "base*3 = ", $base*3, " rand(3) = ", rand(3), "\n";
srand(time|$$);
print "base*2 = ", $base*2, " rand(2) = ", rand(2), "\n";

しかし、srand(time|$$)って、Win系だと数列がほとんど変化しない予感。
505あぼーん:あぼーん
あぼーん
506nobodyさん:03/08/06 01:09 ID:???
>>505( -Д-)…
507504:03/08/06 01:10 ID:???
説明が無いのもなんですので。。
処理系によるかもしれませんが、大抵、srandに同じ乱数シードを与えると
randで読み出す乱数列が同じ物になります。
>>499の複数回のsrand(time|$$)で、$$(プロセスナンバー)は変化しません。
timeは一秒ごとに更新なので、これもほとんど変化しません。
つまりrandの前でsrand(time|$$)を実行することによって、(かなりの確率で)
同じ数列を読み出してることになります。

rand(n)はrand()*nと(最低でもperl5.005_03以降は)等価なので、
int(rand(9))==3が成り立ちrand()値が同じ場合、rand(2)で得られる値は
3.0/9*2=0.666..から3.999../9*2=0.888..までの値になります。
よってint(rand(2))で得られる値は常に0になります。

…多分ね。
508nobodyさん:03/08/06 09:23 ID:7imIHn2W
evalについて教えてください。
パッケージ($package)のシンボルテーブルを、%stabで参照できるようにする
コードとして、赤ラクダ本に次のように書いてありました。

local(*stab) = eval("*_$package");
(*_$packageの部分は、Perl5では、*{${package}::}だと思います。)

このevalは何をしているのでしょうか? あっても、なくても同じでしょうか?
509 ◆hMJAPH9PWA :03/08/06 09:29 ID:???
>>508
perl4ではシンボリックリファレンスは使えなかったから、eval()が必要だった。
今ではわざわざeval()する必要はないね。
ついでに型グロブで別名をつける必要も無い。
my $stab_ref = \*{$package."::"};
これでシンボルテーブルへの参照を直接使えばいい。
510nobodyさん:03/08/06 10:57 ID:7imIHn2W
>>509さん
どうも有り難うございます。でも、Perl5でシンボリックリファレンスを使え
ないようにして、しかもevalなしでも動いてしまうのが不思議です。

use strict 'refs';
$package = 'main';
local(*stab) = "*${package}::";
while (($key, $val) = each(%stab)) {
local(*glob) = $val;
if (defined $glob) { print "$key => $glob\n"; }
}
511 ◆hMJAPH9PWA :03/08/06 11:44 ID:???
>>510
あ、ホントだ。
多分、perl5からだと思う。
でも折角のstrict 'refs'なのに…変な仕様だね。
512nobodyさん:03/08/06 11:45 ID:JjxVikEH
HP管理システムのCGIを作ろうとしてるんですが、
フォームから取り入れた情報にファイルを書き換えるコードを書いたんです。
そしたらその書き換えるファイルを開こうとしてもそのOPEN行でエラーが起こってしまうんです
どうしたらいいのでしょうか

open(FILE,"+<$fileini");

ご要望ならソースコードの一部または全部を載せますが・・・。
誰か教えてください。
513nobodyさん:03/08/06 12:55 ID:???
>>1
【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
514nobodyさん:03/08/06 13:11 ID:???
エラーが起きました、開けません。
だってさ。

しかも、「ご要望なら」ソースを見せますが。だってさ。
誰の要望だよ。

ちなみにそのopenは書式ミスしてないよ。
515nobodyさん:03/08/06 13:13 ID:???
>>500
Perlは変数の大きさを勝手に制限するような事はしないから、
Perlの設定や、鯖の設定(もしかしてこれは資源の制限値?)には関係なく、
Perlが取れる最大のメモリが影響する。

>>498
CGIとして動かすなら、ブラウザのタイムアウトでプロセスが殺されるという限界になるはず。
516nobodyさん:03/08/06 13:15 ID:???
あぁ、httpdのCGIプログラムに対するタイムアウトの方が厳しいか。普通。
517nobodyさん:03/08/06 13:19 ID:???
ブラウザのタイムアウトでは鯖のプロセスが死ぬの??
518nobodyさん:03/08/06 13:40 ID:???
>>517
「CGI signal タイムアウト」でググってみ。
書籍があるならsignalの章を見てもいいぞ。

て、ここperlコーディングスレじゃん....
519512:03/08/06 14:37 ID:JjxVikEH
すいません、なにぶんわきまえがないもので・・・

HPの諸設定の書き換えがしたくてCGIをコーディングしたんですが
フォームで設定ファイルを書き換える段階まで来て、
このOPEN行で
Unterminated <> operator at administrator.cgi line 194.
ってでるんです。194行目は open(FILE,"+<$fileini"); です。
520あぼーん:あぼーん
あぼーん
521336:03/08/06 14:51 ID:???
>>519
+<を削除したらどう
522519:03/08/06 15:03 ID:JjxVikEH
>>521
それでいけるんですか!?
523519:03/08/06 15:06 ID:JjxVikEH
なんかエラー増えちゃいました・・・(泣)

Scalar found where operator expected at administrator.cgi line 194, at end of li
ne
syntax error at administrator.cgi line 194, near "open(FILE,"$fileini"
String found where operator expected at administrator.cgi line 201, near "print
FILE ""
(Might be a runaway multi-line "" string starting on line 194)
(Missing semicolon on previous line?)
Backslash found where operator expected at administrator.cgi line 201, near "pri
nt FILE "\"
(Do you need to predeclare print?)
syntax error at administrator.cgi line 227, near "}"
administrator.cgi had compilation errors.
524nobodyさん:03/08/06 15:08 ID:???
>>508-511
local(*stab) = *{"${package}::"}; # シンボリックリファレンス
local(*stab) = "*${package}::"; # シンボリックリファレンスではない

$pkg = 'ABC';
print "*${pkg}::"; # *ABC::と表示
print eval("*${pkg}::"); # *main::ABC::と表示、何でこうなるかは不明
525336:03/08/06 15:11 ID:???
その行そのものは間違ってないがエラー表示で<>がおかしいといっているので
とりあえず削除してみてどうなるのか確認したかった。
どっか前の行で"を付け忘れたりとかそんなミスじゃないの。
526336:03/08/06 15:19 ID:???
>>519
$file ="test.txt;
open(IN, "+<$file");
これで同じエラーが出ます。
527nobodyさん:03/08/06 15:25 ID:???
>>526
カッコや""なんかの対応が合ってないだろ。
エラーメッセージ行は考えずにそのルーチン内を全部見てみれ。
528519:03/08/06 16:00 ID:JjxVikEH
>>527
一応一通り見てみたんですけど、おかしいとこはなかったんです。

sub formset {
# フォームデータ取得
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query="$ENV{'QUERY_STRING'};
}
# フォームデータ復元
foreach $pair (split(/&/, $query)) {
($key, $value) = split(/=/, $pair);
# 文字のデコード
$value =~ tr/+/ /;
$value =~ s/%[0-9a-fA-F][0-9a-fA-F]/chr(hex($1))/eg;
$foem{$key} = $value;
}
# ファイル出力
open(FILE,"+<$fileini");
seek(FILE,0,0);
foreach $key (sort keys %form) {
print FILE "\$$key=\"$form{$key}\"\;\n";
}
# ファイルを閉じる
close(FILE);
}

これがこのコードの入ったサブルーチンです。
このルーチンを抜いてチェックしてみたらsyntax OKでした。
529519:03/08/06 16:01 ID:JjxVikEH
すいません、かなり、見づらくなってしまいました(汗)
530nobodyさん:03/08/06 16:04 ID:???
$query="$ENV{'QUERY_STRING'};
531nobodyさん:03/08/06 16:06 ID:???
何故か分からないが、>>506が気に入った。
532あぼーん:あぼーん
あぼーん
533519:03/08/06 16:20 ID:JjxVikEH
ほんとだ!
今の今までまったく気がつきませんでした。

syntax OK出ました!!
ありがとうございました!
534nobodyさん:03/08/06 17:11 ID:???
情報を小出しにすると解決までの道のりが遠くなる、という見本のような質問だったな。
535nobodyさん:03/08/06 17:51 ID:???
うぜぇ
536nobodyさん:03/08/06 18:27 ID:???
つーか括弧の対応とかクォーテーションの数を確認するスレではないんだが
537nobodyさん:03/08/06 18:34 ID:???
perlの気持ちになってみると、

$query="$ENV{'QUERY_STRING'};
.....次の " を探し中....
open(FILE,"+<$fileini");

ビクッ. ∧ ∧ ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  Σ(゚Д゚;≡;゚д゚) < うおっ、 " がでてきたが、なんかすげえ所に迷い込んじまったぞ、ゴルァ!
     ./ つ つ    \______________________
  〜(_⌒ヽ ドキドキ
     )ノ `Jззз
538nobodyさん:03/08/06 18:40 ID:???
>>533
悪いが、この程度も自力解決できないようだと、プログラミングは難しい。

試しに聞いてみるが、この程度のエラーが出る度に2chで何日もかけて尋ねるのか?
539nobodyさん:03/08/06 18:43 ID:???
明らかに構文が正しい行でエラーが出た場合は、
>>528みたいに、前の"の対応ができてない。

EOFにエラー出る場合は、大体括弧の対応がおかしい。


このくらいは覚えれ
540nobodyさん:03/08/06 18:48 ID:???
>試しに聞いてみるが、この程度のエラーが出る度に2chで何日もかけて尋ねるのか?

そういう奴が以前いたな。
541nobodyさん:03/08/06 18:50 ID:???
opun(DATA,"data.txt");
で動きません。どうしてですか?
542nobodyさん:03/08/06 18:58 ID:???
>>541
>>1
1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
543nobodyさん:03/08/06 18:59 ID:???
ファイルハンドルをDATAとして、data.txtを開きたい
Syntax errorがでました。
544nobodyさん:03/08/06 19:07 ID:???
厨な質問が増えたな
545nobodyさん:03/08/06 19:30 ID:???
>>543
構文エラーです。
構文を確認してください。
546nobodyさん:03/08/06 20:05 ID:???
ローマ字perlというのが出来たのか?
547nobodyさん:03/08/06 20:24 ID:???
>>541
わざとか?ネタか?いいかげんにしてくれ。

open

さぁ、さっさと帰れ。
548nobodyさん:03/08/06 20:59 ID:???
541です。すいません、構文エラー直りました。
それと、
if(!iguzisuto "data.txtx"){処理;}
が動きません。
どうしてでしょうか。イグジストであってるはずなんですが・・・
549nobodyさん:03/08/06 21:04 ID:???

     o   .  。   .  .   ,  . , o 。゚. ,゚ 。 + 。 。,゚.。
 ゚ ,   , 。 .   +  ゚   。  。゚ . ゚。, ☆ * 。゚. o.゚  。 . 。
。 .  .。    o   .. 。 ゚  ゚ , 。. o 。* 。 . o. 。 . .
        。   .   。  . .゚o 。 *. 。 .. ☆ . +. .  .
 。 .  . .   .   .  。 ゚。, ☆ ゚. + 。 ゚ ,。 . 。  , .。
    ゚  。   ゚  .  +。 ゚ * 。. , 。゚ +. 。*。 ゚.   . . .  .
 。  .   . 。 。゚. 。* 。, ´。.  ☆。。. ゚。+ 。 .。  .  。   .
  .   。  ゚ ゚。 。, .。o ☆ + ,゚。 *。. 。 。 .    。    .
 ゚ .゚ ゚  。゚ + 。. +。 * 。゚。゚., ,+ 。゚. 。 . .   ,    ,   .
゚。゚+゚`, o。。.゚*。゚ 。.゚ 。 ☆+。。゚. ° 。 .   ,      ゚    ゚
 。, .゚。 + ☆。,゚. o。 。+ 。゚.,  . ゚   ,   。     。   .   .
 ゚. o * 。゚。゚.。゚。+゚ 。 。 ゚。 ゚ 。  ゚
゚` .゚ .゚. ゚. . ゚  .  ゚  .   ,  .     .  .   。      ゚ .
 .  .     . ,     。       .           .  ,    .
      。                 ゚   .           。
 , .        .           ,       .     .
        夏だね
     。     V    ∧∧   ∧∧   <うん。夏だ
                ( :;;;;;:::)  ( :;;;;: )
.   .            /:;;;;;: |    | :;;;:ヽ
              〜(::;;;;;;:/.    |:;;;;;;: )
      ‐''"´'''"""''"`''""`"""''''''"´'''"""''"`''""""'''"''''''"`"""''''``'‐
550nobodyさん:03/08/06 21:05 ID:???
いや、そりゃ8月は夏でしょ
551nobodyさん:03/08/06 21:24 ID:???
ニュージーランドでは冬。とってもさむい。
552nobodyさん:03/08/06 21:27 ID:ihwsdtLY
delete $hash{'name'};
はvalueを削除するがエントリーは残る、よって
$hash{'name'} = '';
と同じ。

undef $hash{'name'};
は未定義だからエントリーそのものがなくなる。

であってますか?
553nobodyさん:03/08/06 21:54 ID:???
いいえ   
554nobodyさん:03/08/06 22:09 ID:???
>>552
existsやってみたらすぐわかるじゃん。
ちょうど逆。
555nobodyさん:03/08/06 22:14 ID:???
>>554
センセー definedだと思いますっ。
556nobodyさん:03/08/06 22:18 ID:???
>>555
definedは両方偽だよ。
557nobodyさん:03/08/06 22:20 ID:???
センセー ボクがまちがっていましたっ。
558552:03/08/06 23:10 ID:???
>>554
コマンドラインでやってみたら全く逆でした。
すません。
keyからそっくりなくすにはdeleteなんですね。
559nobodyさん:03/08/07 07:46 ID:???

 マニュアル *読めば* 理解できる事だが…
560nobodyさん:03/08/07 10:17 ID:MNjVgF7U
簡単なことかもしれないけど
$aの属性
$a = 100
$a1 = 200
$a2 = 300

$b

があるとする。このとき、$aの属性と$aの属性がぶつかったときは
なんともにないけど、$aの属性と$bの属性がぶつかったときは
条件が加えるようにしたい

それで
$aのときは条件をつけようと思ったんですけど、属性$aの定数が変数なので
条件がうまくつけられない
よい方法はないだろうか?
if = $a
だと下の2つが含まれなくなる。初心者だけど、わかりますか?
561 :03/08/07 10:20 ID:???
>>560
属性というのがわからない。
562nobodyさん:03/08/07 10:23 ID:???
>>560
変な自分用語を使わないでクレ。
あと簡単な例でも書いてくれ。
563nobodyさん:03/08/07 10:29 ID:MNjVgF7U
ゲームなんだけど
属性というのは火属性は$aとする
$a1や$a2もダメージが違うだけで、火属性としたい。

$bや$cの属性も作りたいけど、ダメージ違いのものもたくさん作る。

このとき火属性と水属性がぶつかったら命中力がおちるとか
条件をつけたい
その属性を特定づける、うまい書き方ってありますか?
ダメージは相手の防御でランだムに減るので、数字は変数なので
固定させることはできないです。
564nobodyさん:03/08/07 10:31 ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

1: 自分はこう言う事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。


    『どういう入力に対してどういう出力が出るのか書け』
565nobodyさん:03/08/07 10:36 ID:MNjVgF7U
出力というよりも、入力のしかたがわからないです。
566nobodyさん:03/08/07 10:41 ID:MNjVgF7U
$ = int(rand 6);

$aは火
$a = 100
$a1 = 200
$a2 = 300

属性は水
$b = 100
$b1 = 200
$b2 = 300

if {
$火属製 = 条件
else { 水属性の条件
567nobodyさん:03/08/07 10:44 ID:MNjVgF7U
火属性に条件を加えたいが、
$aで加えても$a1 $a2 は火属性の条件がつかないので、困る
568nobodyさん:03/08/07 10:45 ID:MNjVgF7U
100とか200にしてるけど、実際の数字は300×ランダム値−(魔法防御)
とか変数になる
569nobodyさん:03/08/07 10:48 ID:???
### 魔法の処理 ###
$magic[$zokusei]['lv1'] = 100;
$magic[$zokusei]['lv2'] = 200;

if($zokusei == "fire"){
if($zokusei == "water"){
水の時の処理;
}elsif($zokusei == "earth"){
土の時の処理;
}
}

俺ならこんな感じかな(手抜きでスマソ
570569 :03/08/07 10:49 ID:???
ついタブを _| ̄|○
571569 :03/08/07 10:56 ID:???
しかもこれじゃ駄目じゃん!<俺
phpと混ざってるし…

ちゃんと回線切って吊ってきて直してくる…
572nobodyさん:03/08/07 10:57 ID:MNjVgF7U
なるほど。[$zokusei]['lv1']の方法を初めてみました。
自分のは無駄が多かったみたいです。ありがとうございます。
573569 :03/08/07 11:00 ID:???
>>572
まあ、ハッシュを使ってくれという事だ…。

さて吊ってくる
574nobodyさん:03/08/07 11:07 ID:MNjVgF7U
え!?まちがってるんですか!?
575 :03/08/07 11:14 ID:???
>>574
とりあえずgoogleさんでハッシュに関して調べてみるべし。
多分お前が望んでいる答えがそこにある。

$magic{$zokusei}{LV}

上記は、「魔法」の「属性」が「レベル幾つ」のものであるか、という意味だ。
プレイヤー1の魔法属性(仮に$magic_p1)とプレイヤー2の魔法属性($magic_p2)とする。


if($magic_p1 == "fire"){ ### プレイヤー1の属性が火の時

とかでいいんでない?

細かくはリファレンスでも見るよろし。
576nobodyさん:03/08/07 11:16 ID:MNjVgF7U
[$a]などを名前の後ろに属性としてばばばって書いてしまいましたが、
これは問題ないですよね?

Perl のゲームに適した文法の辞書サイとを知りませんか?
577 :03/08/07 11:18 ID:???
ここは確かに初心者コーナーだが、1から10まで面倒を見てやるところじゃない。
578nobodyさん:03/08/07 11:28 ID:MNjVgF7U
直しました
あと、簡単なことは自分で調べたいんですが、
手元にある入門の本は不十分で、いろいろできないんですよ。
いいサイトしりませんか?

ちなみに、パール、辞書で調べると、パールスクリプトの辞書が
ひっかかって、肝心の言語辞書が全くみつからないです
579nobodyさん:03/08/07 11:30 ID:???
580nobodyさん:03/08/07 12:20 ID:???
「言語辞書」って一体何だよ…
属性もそうだが、自分用語を改めないことにはこの先もトラブルが絶えないぞ。
とりあえず先人のまとめてくれたテンプレ>>4-6を参考にすべし。
581nobodyさん:03/08/07 12:25 ID:???
よく分からんが、この質問は
「ある1つの魔法に、属性や攻撃力など
複数のパラメータを設定するうまい書き方を教えてくれ」
と解釈して良いか?

↓複数のパラメータを設定する方法

$magic{'メラ'} = ['fire','100'];
$magic{'バキ'} = ['air','500'];

↓各パラメータの参照方法

print "$magic{'メラ'}[0]";
print "$magic{'バキ'}[1]";
582nobodyさん:03/08/07 13:11 ID:???
583nobodyさん:03/08/07 13:23 ID:???
ハッシュがとうとかより、もっと多次元な気がするからリファレンスだと思うんだけど。
>>581の例はハッシュの中に無名配列のリファレンスを入れた例かな。
実際はもっと複雑になると思われ。
584nobodyさん:03/08/07 13:28 ID:???
ファイル abc.html に含まれる あいうえお という文字列を かきくけこ に変換して上書き保存したい場合はどう記述すればいいんでしょうか?
ご回答よろしくお願いします。
585nobodyさん:03/08/07 13:44 ID:fxtSTKIN
#!/path/to/perl

open IN,"file/name/to/convert";
open OUT,">file/name/to/convert.tmp";
while(<FILE>){
s/あいうえお/かきくけこ/g;
print OUT;
}
rename "file/name/to/convert.tmp","file/name/to/convert";
586nobodyさん:03/08/07 13:57 ID:2CZr0oID
FreeBSDのみでしか動作確認ができていないperl-cgiをANHTTPD+ActivePerlで動かしたいけど、
open($fh, "-|");
が開けなくて困っています。
Windows版のperlは-|は対応していないのですか?
素敵な対応方法を教えてください。
587nobodyさん:03/08/07 14:11 ID:???
>>586
perldoc -f open は読んだかい?
588nobodyさん:03/08/07 14:35 ID:???
マックやウィンドウズでは使えないっすよ
589nobodyさん:03/08/07 15:12 ID:2CZr0oID
>>587 >>588
サンクスコ
590nobodyさん:03/08/07 15:13 ID:???
さげるの忘れてますた
591あぼーん:あぼーん
あぼーん
592nobodyさん:03/08/07 16:03 ID:MNjVgF7U
ゲームで、対戦で、攻撃はパンチとキック、どちらかは2分の1
パンチの場合は、5回に1回はダメージ低い。
さらに5分の2の確率でミスをする。

というのを、1ターンの各攻撃を下のスクリプトに書いたが動かない
誰かこの初心者を助けてください
593nobodyさん:03/08/07 16:03 ID:MNjVgF7U
プレイヤー1は$play11の攻撃
プレイヤー2は$play22の攻撃

$play11 = $sentaku1
$play22 = $sentaku1
$kik = 60

$sentaku = {
$play1 = int(rand 2)
if($play1 == 0) {
$kik
}
}

else($play1 == 1) {
$bougyo = int(rand 5)
if($bougyo =< 1){
0;
else($bougyo >= 2) {
1;
}

{
$panti = int(rand 5);
if($panti == 0) {
$panti1 = 10;
else($panti > 0) {
$panti2 = 20;
}
* $bougyo;
}
}
594nobodyさん:03/08/07 16:32 ID:???
( ゚д゚)ポカーン あきれて何も言えん・・・
595nobodyさん:03/08/07 16:40 ID:???
>>592
ちみ、潔いですね!男らしいですね!
ということで、『今回だけ特別に』解答してさしあげる。
構造化プログラミングが苦手そうなちみは、gotoを使いなさい。
596nobodyさん:03/08/07 16:43 ID:???
>>592-593
ここはお前の相談コーナーじゃないし、質問以前の問題だ
文法を一から勉強しなおしてこい
597nobodyさん:03/08/07 16:56 ID:???
ゲームで値を決める場合
$temp = A1 ? B :
A2 ? C ;
A3 ? D :
'';
とか、オレならやるかな…
598nobodyさん:03/08/07 17:20 ID:???
$panti = black; (;´Д`)ハァハァ…
599nobodyさん:03/08/07 17:41 ID:???
$panti = t_back; (;´Д`)ハァハァ…
600 :03/08/07 17:43 ID:???
$panti = heibon; (;´Д`)ハァハァ…
601nobodyさん:03/08/07 18:06 ID:fDShQWtW
質問させてください。

192\.168\.0\.[24-26]

こんなイメージで正規表現使いたいのですが、勿論このままでは
とおりません。
何かいい書き方ありましたら教えてください。
602nobodyさん:03/08/07 18:07 ID:???
192\.168\.0\.[24|25|26]
603601:03/08/07 18:07 ID:???
すみません、実際やってるIPは
192\.168\.0\.[65-94]
です。
604あぼーん:あぼーん
あぼーん
605nobodyさん:03/08/07 18:11 ID:???
ピリオドでsplit
606nobodyさん:03/08/07 18:12 ID:???
>>603
192\.168\.0\.((6[56789])|([78][0-9])|(9[1234]))
607601:03/08/07 18:16 ID:???
>>606
マジで感謝でございます。
有難うございました。
608あぼーん:あぼーん
あぼーん
609あぼーん:あぼーん
あぼーん
610nobodyさん:03/08/07 18:55 ID:???
>>603
$addr="192.168.0.78";
$addr=~/192\.168\.0\.(\d+)/;
if($1>=65&&$1<=94){
611nobodyさん:03/08/07 20:28 ID:MNjVgF7U
あなたたち、これのどこがおかしいんですか?
とてもすばらしいじゃないですか
僕の芸術をケチつけられても困ります。

もっといい方法があるなら教えてくださいよ
612あぼーん:あぼーん
あぼーん
613nobodyさん:03/08/07 20:30 ID:MNjVgF7U
プレイヤー1は$play11の攻撃 プレイヤー2は$play22の攻撃

$play11 = $sentaku1
$play22 = $sentaku1
$kik = 60

$sentaku = {
$play1 = int(rand 2)
if($play1 == 0) {
$kik
}
}
else($play1 == 1) {
$bougyo = int(rand 5)
if($bougyo =< 1){
0;
else($bougyo >= 2) {
1;
}
{
$panti = int(rand 5);
if($panti == 0) {
$panti1 = 10;
else($panti > 0) {
$panti2 = 20;
}
* $bougyo;
}
}
614nobodyさん:03/08/07 21:24 ID:???
もう来るなと言ったろ
615nobodyさん:03/08/07 22:51 ID:???
それ、エラーチェックしてんの???????????????


とりあえず、まず文法守れや。
616nobodyさん:03/08/08 00:55 ID:???
foreachは
foreach $a ($b) {}
とするか
foreach ($b) {}
とするのはどっちのほうがいいのですか?
617nobodyさん:03/08/08 01:05 ID:???
>>616
ケースバイケース。
後者は $_ に入るだけだから、うまく使い分ける。
618nobodyさん:03/08/08 01:06 ID:XW8ex5pf
あるCGIに半角カナも投稿出来るように改造したいなと思い、
ライブラリ、jcode.plをjcodeg.plに変更し、コンバート処理を
&jcode'convert(*value, sjis);
から、
&jcode'convert(*value, "sjis", "", "z");
のように変更しました。
これで一応は半角カナも文字化けせず投稿できるようにはなったんですが、
ログファイルの更新ごとに、ログファイル先頭の部分に、
「*main::valuesjisz」
という何とも意味がわからぬ文字がついてしまうようになりました...
色々いじってみたのですが、上手くいきません。
どうしたら上手く処理出来るんでしょうか...

jocdeg.pl : ttp://jo.st45.arena.ne.jp/script/
619nobodyさん:03/08/08 01:16 ID:???
>>618
これでやってみそ。

&jcode'h2z_sjis(*value);
620nobodyさん:03/08/08 01:21 ID:RBuH2Puu
プレイヤー1は$play11の攻撃 プレイヤー2は$play22の攻撃

$play11 = $sentaku1
$play22 = $sentaku1
$kik = 60

だけど、エラーが出ます。なんでエラーでるんすか?
イフとエルスの置き方はちゃんとしてますよ。
ふざけてますね。
621あぼーん:あぼーん
あぼーん
622nobodyさん:03/08/08 01:23 ID:???
なんでそんなんも分からん状態で質問してんのさ。
最低限文法とか調べてや。
ふざけてるのは(ry

単純文の終わりにはセミコロンがいるよ。
623nobodyさん:03/08/08 01:25 ID:???
>611 :nobodyさん :03/08/07 20:28 ID:MNjVgF7U
>あなたたち、これのどこがおかしいんですか?
>とてもすばらしいじゃないですか
>僕の芸術をケチつけられても困ります。
>
>もっといい方法があるなら教えてくださいよ
624あぼーん:あぼーん
あぼーん
625nobodyさん:03/08/08 01:31 ID:???
キリないから相手にするなって
626618:03/08/08 01:41 ID:???
>>619
どうもありがとうございます。
早速やってみたところ、500 Internal Server Errorが出てしまいました(~_~;)
他に手立てはないでしょうか?
よろしくお願いします。
627nobodyさん:03/08/08 01:46 ID:???
>>626
ちゃんとエラーの読める環境で試しましょう。
628nobodyさん:03/08/08 01:55 ID:???
>>618さん
&jcode::convert(\$value, "sjis", "", "z");
と書いてもダメぽ?
629618:03/08/08 02:05 ID:???
>>628
エラーも出ず、ログファイルも正常に更新されました!!
どうもありがとうございます!(^^)!
630nobodyさん:03/08/08 02:41 ID:RBuH2Puu
攻撃
イフキック

エルス、パンチ(イフ、命中(イフ、5分の1で会心の一撃
             (エルス、普通
       (エルス、ミス

と言う様に、イフの中に、さらに3重、4重にイフやエルスを
クませることってできますよね?

あと、エラー出ても、500さーバーエラー、中見が悪いって内容の
エラーしか出ないんですけど、どこが悪いか詳細の出すことできないっすか?

自分のパソコンにアクティブ入れると、詳細出ますかね?
631nobodyさん:03/08/08 02:43 ID:???
各生徒のテストの成績データをperlで扱うとき、どのようなデータ型を使うのが
ベストでしょうか?DBは使わないとします。

要するに、行が色々なテスト名、列が生徒名となっているような典型的なテーブルです。
632nobodyさん:03/08/08 02:50 ID:???
>>631
ハッシュでいいんじゃないの?
633nobodyさん:03/08/08 02:56 ID:???
生徒名・テスト名から点数にアクセスできるようにしたいのですが、
ハッシュだとキーはどうなりますか?
634nobodyさん :03/08/08 03:01 ID:???
リファレンスでも勉強してくれば〜??
635nobodyさん:03/08/08 03:53 ID:???
636あぼーん:あぼーん
あぼーん
637あぼーん:あぼーん
あぼーん
638あぼーん:あぼーん
あぼーん
639あぼーん:あぼーん
あぼーん
640あぼーん:あぼーん
あぼーん
641nobodyさん:03/08/08 04:32 ID:RBuH2Puu
攻撃
イフキック

エルス、パンチ(イフ、命中(イフ、5分の1で会心の一撃
             (エルス、普通
       (エルス、ミス

と言う様に、イフの中に、さらに3重、4重にイフやエルスを
クませることってできますよね?

642nobodyさん:03/08/08 04:34 ID:RBuH2Puu
こうなる
プレイヤー1は$play11の攻撃 プレイヤー2の$play22の攻撃;

$play11 = $sentaku1;
$play22 = $sentaku1;
$kik = 60;
$sentaku = {
$play1 = int(rand 2);
if($play1 == 0) {
$kik;
}
}
else($play1 == 1) {
$bougyo = int(rand 5);
if($bougyo =< 1){
0;
else($bougyo >= 2) {
1;
}
{
$panti = int(rand 5);
if($panti == 0) {
$panti1 = 10;
else($panti > 0) {
$panti2 = 20;
}
* $bougyo;
}
}
643nobodyさん:03/08/08 04:44 ID:???
>>642
どこでPerlを学んだ?
644nobodyさん:03/08/08 04:44 ID:RBuH2Puu
フセイン
イフ捕まる(アメリカに核を落とす

エルス捕まらない(イフ包茎じゃない(イフ、オレは天才(オレを総理に
                         逆らう者北朝鮮へ
                 (エルス、オレは天才じゃない
                          (世界を滅ぼす
        (エルス包茎(世界を滅ぼす

と言う様に、イフの中に、さらに3重、4重にイフやエルスを
クませることってできますよね?
645nobodyさん:03/08/08 04:48 ID:???
>>644
もう寝れ。二度とくるな。基本的な文法くらいわかってから来い
646nobodyさん:03/08/08 04:49 ID:RBuH2Puu
10日でおぼえる
Perl/CGI
入門教室

<h1>定価2800円
税なし
647nobodyさん:03/08/08 04:51 ID:???
>>646
俺もそれ読んだが、それ読んで、なんで>>644なんだ?
その本を理解するまで読んどけ
648nobodyさん:03/08/08 04:54 ID:RBuH2Puu
おれのパーるは動かないぞ
サーバーはエラーばっか出しヤガル
自分のパソコンにアクティブ入れようか考え中
649nobodyさん:03/08/08 04:54 ID:???
ところで全然関係ないけど。

今日、オートロードってヤツをなんと初めて知った。恥ずかしい限り。
見た瞬間感動しちまった初心者な自分。
うん、いいね。あれ。

それだけです。
650nobodyさん:03/08/08 04:55 ID:RBuH2Puu
おみくじの部分を入れかえて
パわーアップさせたら、そうなった
651nobodyさん:03/08/08 04:56 ID:RBuH2Puu
この本、全然使えないな
652nobodyさん:03/08/08 04:56 ID:???
>>649
名前しか知らない。解説して。




ぐぐるの面倒だ
653nobodyさん:03/08/08 04:57 ID:???
>>651
使えないのはお前の脳みそです。
俺はそれでPerl始めましたから。
かなりわかりやすい本だと思いますが?
654nobodyさん:03/08/08 04:58 ID:RBuH2Puu
3000円返せ
655nobodyさん:03/08/08 05:01 ID:RBuH2Puu
半か丁かのところで
半を選ぶ

そこにさらに半を選ぶと、半か丁か選ばれて内容がかわる

半か丁かを簡単に改造しただけなんだが
この始末だ

10日でおぼえるどころか、1日目から動かない
この本、だめすぎ
656nobodyさん:03/08/08 05:04 ID:???
>>655
解説嫁。カスガ。けなすな、人が気に入ってる本を








と、反応してしまう自分が悲しい
657nobodyさん:03/08/08 05:13 ID:RBuH2Puu
わかった
if($bougyo =< 1){

の=と<が逆だな
56Pでわかったよ
これで動きそうだ
658nobodyさん:03/08/08 05:30 ID:fJ1eIuTw
>>657
いや、報告しなくていいから。
ここはあんたの日記帳じゃないんだし。
659nobodyさん:03/08/08 05:41 ID:???
ゲームで、対戦で、攻撃はパンチとキック、どちらかは2分の1パンチの場合は、5回に1回はダメージ低い。さらに5分の2の確率でミスをする。
--------------
実行してないから動くのか知らんけど暇つぶしに。誰が攻撃するのか分からんかったからこう書いた。
--------------
srand;
if($mode == 1){
 $offense = \%you;
 $defense = \%my;
}elsif($mode == 2){
 $offense = \%my;
 $defense = \%you;
}
if( int(rand(2)) ){
 #punch
 $damage =
  $offense->{'攻撃力'} - $defense->{'守備力'};
 if(!$rand = int(rand(5))){
  #half
  $damage = int($damage / 999);
 }elsif($rand < 3){
  #miss
  $damage = "";
 }
}else{
 #kick
 $damage =
  $offense->{'攻撃力'} - $defense->{'守備力'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
660nobodyさん:03/08/08 05:44 ID:???
>>652
間違って存在しないサブルーチンに飛んだら、エラーを発生させず、特定のサブルーチンに移動してもらう昨日。
引数もちゃんと受け継がれる。
変数名で飛んでくルーチンを指定してる時とか便利かも。

使いかたは検索して。
661nobodyさん :03/08/08 05:44 ID:???
fJ1eIuTw は自演か?

二度と来るな!
662nobodyさん:03/08/08 05:51 ID:???
>>661
違う。頭の柔軟体操のため、作ってみただけ。
スマソ。
663662:03/08/08 05:58 ID:???
>>661-662
勘違い起こした。fJ1eIuTwは、>>658だったのね。
恥ずかしい勘違いレスをしてしまった。汗
664nobodyさん:03/08/08 06:27 ID:???
RBuH2Puuって、ちょっと前に探してますスレにいた粘着と行動が似てるな。
665nobodyさん:03/08/08 06:32 ID:???
>>660
知らなかった。いいこと知った。
666nobodyさん:03/08/08 06:34 ID:???
別に>>658は自演じゃないべ。
667nobodyさん:03/08/08 08:09 ID:???
自分も以前、半角カナのやつで行き詰まったことがあるけど、適当にいじってたら投稿できるようになった。

if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
jcode::convert(\$buffer, 'euc');
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
てな感じで…

チャットなんもんで、htmlで出力してるんだけど
ヘッダには charset=Shift_JIS って書いてる。
でも文字化け全然しない…
不思議……(@▽@;)
668nobodyさん:03/08/08 13:11 ID:???
>>659
お前はバカか?やるなら荒らしと廃スレでやれや
669nobodyさん:03/08/08 14:21 ID:awu4UezK
配列のなかの要素(数字)をすべて足した数値を出すには
foreachを使うのが一番いいのでしょうか?
670nobodyさん:03/08/08 14:45 ID:???
>>669
map でも良さそうですね。
671nobodyさん:03/08/08 14:49 ID:???
>>667
IEで見てんじゃねーの
672nobodyさん:03/08/08 15:25 ID:???
>>669-670
<q cite="http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlstyle.html">
戻り値をただ単に捨ててしまうような void 文脈で、grep()やmap()、
`backticks` (訳注: `ls`のようにバッククォートで括った実行文のこと)
を使うことは避けましょう。そういった関数はすべて戻り値を持って
いるのですから、それを使うべきです。戻り値に用がないのであれば、
代わりにforeach()を使ったループか system()関数を使いましょう。
</q>
673nobodyさん:03/08/08 16:17 ID:???
>>669
$ perl -e '@array=(1,2,3);print eval join("+",@array);'
674nobodyさん:03/08/08 16:22 ID:???
:で区切られた文字列があります。
もし、 : の後にhogehogeがあるなら、:から:までを消すのはできたんですが
   ※こんな感じで s/:hogehoge.*?://g
その逆の、 : の後にhogehogeが ない なら、:から:までを消す 方法を教えてください。
675nobodyさん:03/08/08 16:30 ID:???
age
676あぼーん:あぼーん
あぼーん
677あぼーん:あぼーん
あぼーん
678あぼーん:あぼーん
あぼーん
679あぼーん:あぼーん
あぼーん
680あぼーん:あぼーん
あぼーん
681nobodyさん:03/08/08 16:47 ID:RBuH2Puu
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'攻撃力'} - $defense->{'守備力'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'攻撃力'} - $defense->{'守備力'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
682nobodyさん:03/08/08 16:52 ID:RBuH2Puu
これで動かないんですけど、
あと何が必要ですか?
キャラはPlayer1とPlayer2
Player1はHP400、キック力は60、パンチ力は20、防御力は10
Player2はHP300、キック力は100、パンチ力は40、防御力は0

とりあえず1回動かしてみないと、先にすすめないし、
勉強もできない
困ったもんだ
683nobodyさん:03/08/08 16:55 ID:dNGBD9SF
%Japan = (
       'tokyo' => [ qw(新宿 渋谷 原宿 池袋 秋葉原) ] ,
       'kanagawa' => [ qw(横浜 藤沢 厚木 茅ヶ崎 横須賀) ] ,
   );
という感じのデータで、$Japan{tokyo}を配列としてforeachでぐるぐる回したいのですが、
どのようにすればいいのでしょう?
foreach ( @$Japan{tokyo} ) { print; }
とやったのでは出来ませんでした。



684nobodyさん:03/08/08 16:59 ID:???
Perlの初心者スレが無かったのでここで質問です。

サーバ上のPerlのバージョンを調べたいのです。
Niftyを利用しているのですが、
説明のページにもPerl5としかかかれておらず細かいところがわかりません。
#例えば5.6なのか5.8なのか不明だったり

Perlスクリプトで調べるにはどうやれば良いのでしょうか。
因みにNiftyはtelnet不可で標準モジュールも全く使えません。
685nobodyさん:03/08/08 17:11 ID:???
>>684
#! /usr/local/bin/perl

print 'Content-Type: text/html',"\n\n";
print '<html>';
print $];
print '</html>';

ってな感じのCGIを設置してアクセスする。
686nobodyさん:03/08/08 17:14 ID:???
#質問でsageてた

>685
ありがとうございます。
5.00503だとわかりすっきりしました。
687674:03/08/08 17:17 ID:???
…かいけつしますた
688nobodyさん:03/08/08 17:17 ID:???
>>683の質問ムズイ(;´Д`)・・・これが解ければリファレンスが理解できた事になるかな・・・
689688:03/08/08 17:20 ID:???
と思ったら、ぐぐったらあっさり解決したよ(´・ω・`)ションボリ

>>683
foreach (@{$Japan{tokyo}})

括弧ひとつ余計につけないとダメらしい
690nobodyさん:03/08/08 17:33 ID:RBuH2Puu
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

# Player1
$HP = 400;
$KIK = 60;
$PAN = 20;
$DF = 10;

# Player2
$HP = 300;
$KIK = 100;
$PAN = 40;
$DF = 0;

# Player1
$kougeki1 = srand;

# Player2
$kougeki2 = srand;

srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
691nobodyさん:03/08/08 17:33 ID:RBuH2Puu
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN'} - $defense->{'$DF'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK'} - $defense->{'$DF'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;

# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p></body>\n";
print "</html>";
692nobodyさん:03/08/08 17:34 ID:RBuH2Puu
やっぱ動かない
考えるか
693nobodyさん:03/08/08 17:37 ID:???
>>RBuH2Puu

わざわざ貼らんでよろしい。
694nobodyさん:03/08/08 17:39 ID:???
スルーでお願いします
695nobodyさん:03/08/08 17:57 ID:RBuH2Puu
動くまで貼るけどな
696nobodyさん:03/08/08 18:04 ID:???
一生貼り続けるってことだね( ´,_ゝ`)プッ
697683:03/08/08 18:13 ID:???
>>688さん
ありがとうございます!見事に出来ました!
それにしても、やっぱりリファレンスって難しいんですね…。

698nobodyさん:03/08/08 20:00 ID:???
つーかattackとかkickとかしろよ、名前
KIKって(;´Д`)
699nobodyさん:03/08/08 20:02 ID:???
>>659
が余計なコト書くから。
RBuH2Puuがわけの分からん行動はじめた。
700nobodyさん:03/08/08 20:13 ID:???
ぷうまだ居たんだ。
701nobodyさん:03/08/08 20:25 ID:???
もうすでに意地になってるだけだろ。一番ダサいパターンだ。
702nobodyさん:03/08/08 20:28 ID:???
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
703nobodyさん:03/08/08 20:35 ID:???
ある変数を複数の条件で比較したいのですがどうすれば良いのでしょう。
例えば$hogeは$fooか$barか$baz以外の値であればエラーとしたくて
if ($hoge ne ($foo or $bar or $baz)){&error(不正な値が混じってます);}
のように書いたりしたのですがダメでした。
704nobodyさん:03/08/08 20:39 ID:???
if (($hoge ne $foo) or ($hoge ne $bar) or ($hoge ne $baz)){&error(不正な値が混じってます);}
705nobodyさん:03/08/09 01:40 ID:???
>>704
書いた本人もわかってると思うけど、orはandの間違いだよね。
706nobodyさん:03/08/09 02:34 ID:9s2Ca0tO
# Player1
$HP = 400;
$KIK = 60;
$PAN = 20;
$DF = 10;

# Player2
$HP = 300;
$KIK = 100;
$PAN = 40;
$DF = 0;

# Player1
$kougeki1 = srand;

# Player2
$kougeki2 = srand;
707nobodyさん:03/08/09 02:34 ID:9s2Ca0tO
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN'} - $defense->{'$DF'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK'} - $defense->{'$DF'};
}
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
708nobodyさん:03/08/09 02:34 ID:9s2Ca0tO
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p></body>\n";
print "</html>";
709あぼーん:あぼーん
あぼーん
710あぼーん:あぼーん
あぼーん
711あぼーん:あぼーん
あぼーん
712nobodyさん:03/08/09 02:40 ID:???
いつまで荒らせば気が済むんだ
713あぼーん:あぼーん
あぼーん
714あぼーん:あぼーん
あぼーん
715nobodyさん:03/08/09 02:48 ID:???
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
716nobodyさん:03/08/09 03:54 ID:???
>>715
相手にするなよ
お前みたいなのがいるからつけ上げるんだ
717あぼーん:あぼーん
あぼーん
718nobodyさん:03/08/09 04:09 ID:???
>>716
黙れ無能。
719nobodyさん:03/08/09 04:21 ID:???
いるんだよな。
教えたがりというか、得意になりたがるというか。
感謝のレスをもらって満足したいんだろうなぁ。
720nobodyさん:03/08/09 04:37 ID:???
糞な質問は仕方ないとしてもデカイAA貼るのはム板では論外。
荒らしとしても最低の部類に入る。

あ、>>715>>718見て気付いた。ここWebProgだったか。ならいいや。
721nobodyさん:03/08/09 05:13 ID:???
>>720
馬鹿にして満足しているようだが、つまらんな。
いなくても誰も困らないからム板に引っ込んでいれば?
ム板住人にしては最低の部類に入るけどな。
722nobodyさん:03/08/09 05:14 ID:???
>>721
マジレスすんなよ。むかつくなあ。
723nobodyさん:03/08/09 05:20 ID:9s2Ca0tO
なめてやがんな
おれは荒らしじゃねーよ!ヴォケ!!

相手にすんなよ、とか言ってる馬鹿がいるから荒れるんだよ
もとは、てめーみたいな無脳がいるから、住みつくんだっつーの!!
無脳を相手にするのは一番、気持ちいいからな!!馬鹿だから!!
724nobodyさん:03/08/09 05:40 ID:9s2Ca0tO
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}

# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;

# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;

# Player1
$kougeki1 = srand;

# Player2
$kougeki2 = srand2;
725nobodyさん:03/08/09 05:40 ID:9s2Ca0tO
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
726nobodyさん:03/08/09 05:40 ID:9s2Ca0tO
srand2;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;

($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
727nobodyさん:03/08/09 05:41 ID:9s2Ca0tO
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p></body>\n";
print "</html>";
728nobodyさん:03/08/09 05:42 ID:9s2Ca0tO
やっぱり動かないっすね

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage

がいまいち理解できんよ。
729nobodyさん:03/08/09 06:25 ID:???
どれ、ちょっくら削除整理板にでも行ってくるか。
730nobodyさん:03/08/09 06:56 ID:???
>>729
731nobodyさん:03/08/09 07:18 ID:???
9月になったら消えるでしょ。
それに、こういうのは名無し相手には強気になれても、システム側の人間が動き出せば
態度が一変するよ。ほんと面白いぐらいに。
732nobodyさん:03/08/09 07:20 ID:???
システム側
733nobodyさん:03/08/09 07:40 ID:???
ん?なんかおかしいこと言った?
734659:03/08/09 08:42 ID:???
まだいたのか。汗
基本的な文法と、ハッシュとリファレンスを覚えなよ(659のヤツを組み込みたいなら)。
ここで質問しても迷惑だし、無意味だぞ。

ただ目立ちたいだけならさっさとどっか行きな。
735nobodyさん:03/08/09 09:58 ID:???
>>728
>($damage < 0) and ($damage = 0);
>$defense->{'HP1'} -= $damage
>がいまいち理解できんよ。
ほかもまったく理解できてないだろ
736nobodyさん:03/08/09 10:34 ID:???
>>729
幼女板にもおながいします。
◆スクリプト&コピペ(乱立)荒らし報告スレ7
http://qb.2ch.net/test/read.cgi/operate/1060158648/l50

>>735
> >($damage < 0) and ($damage = 0);
and しなくてもいいよな(w
03/08/07(Thu) ID:MNjVgF7U
560,563,565-568,572,574,576,578,592,593,611,613
03/08/08(Fri) ID:RBuH2Puu
620,630,636-642,644,646,648,650-651,654-655,657,676-678,680-682,690-692,695
03/08/09(Sat) ID:9s2Ca0tO
706-711,713-714,723-728

スレッドの約6%を消費。
738nobodyさん:03/08/09 11:24 ID:???
ID:9s2Ca0tO ウザイな…。と、思ったら削除依頼出てるね。サンクス>出した人
739nobodyさん:03/08/09 12:33 ID:???
>>703
&error('不正な値が混じってます') unless grep{$hoge eq $_}($foo,$bar,$baz);
とか
740703:03/08/09 13:02 ID:???
andで出来ました。
$hogeと$fooが一致しないか(or)$hogeと$bar一致しないか(or)とかいう風に
考えてしまいました…。

>739
どもです。
そちらの方がすっきりしてますね。
741nobodyさん:03/08/09 13:03 ID:aJfrmQrg
なんか最後のほうで荒らし多いな〜
742あぼーん:あぼーん
あぼーん
743nobodyさん:03/08/09 14:05 ID:9s2Ca0tO
なんでアンドがいらないんですか?
というより、動かねーよ!
744あぼーん:あぼーん
あぼーん
745あぼーん:あぼーん
あぼーん
746あぼーん:あぼーん
あぼーん
747あぼーん:あぼーん
あぼーん
748あぼーん:あぼーん
あぼーん
749あぼーん:あぼーん
あぼーん
750あぼーん:あぼーん
あぼーん
751nobodyさん:03/08/09 14:59 ID:???
友達いないのか、可哀想に。
752nobodyさん:03/08/09 15:01 ID:???
>>737にさらに744-750か。
753nobodyさん:03/08/09 15:02 ID:???
>>739
grepってそんな使い方も出来るのか…φ(._.)
754nobodyさん:03/08/09 15:32 ID:???
>>740
@array = ($foo,$bar,$baz);
&error('不正な値が混じってます') unless grep{$hoge eq $_}@array;

すっきりしてる、っていうか上みたいな使い方ができるので、
比較対照が可変の場合に楽。
755nobodyさん:03/08/09 18:46 ID:9s2Ca0tO
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}

# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;

# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;

# Player1
$kougeki1 = srand;

# Player2
$kougeki2 = srand2;
756nobodyさん:03/08/09 18:47 ID:9s2Ca0tO
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
757nobodyさん:03/08/09 18:47 ID:9s2Ca0tO
srand2;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;

($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
758nobodyさん:03/08/09 18:47 ID:9s2Ca0tO
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p></body>\n";
print "</html>";
759あぼーん:あぼーん
あぼーん
760あぼーん:あぼーん
あぼーん
761あぼーん:あぼーん
あぼーん
762nobodyさん:03/08/09 18:52 ID:???
だれかこの荒らし君を
killかrmかなんだかしてやってほしい
763nobodyさん:03/08/09 18:54 ID:aJfrmQrg
削除要請しちゃっていい?
764nobodyさん:03/08/09 18:54 ID:???
>>762
むしろforkを
765nobodyさん :03/08/09 18:57 ID:???
>>762 削除依頼は逝ってるから判断してくれるっしょ

しかし、美意識のないスクリプトや・・・
766nobodyさん:03/08/09 19:21 ID:???
走らせるまでもなく動かないのが見え見えだから相手する気にもなれん
767nobodyさん:03/08/09 20:55 ID:???
rm -rf
768nobodyさん:03/08/09 21:13 ID:???
◆スクリプト&コピペ(乱立)荒らし報告スレ7
http://qb.2ch.net/test/read.cgi/operate/1060158648/585

こっちにもあげときました。
769momo:03/08/09 21:29 ID:jpYU10pt
http://ime.nu/ のようなCGIを作っているのですが、
http://***.com/~sub/みたいなチルダが入るとバグってしまうんです
以下にそのまま書いたのでどこを直せばいいのか教えて頂けないでしょうか?
よろしくお願いいたします。


#!/usr/local/bin/perl

print qq|content-type: text/html\n\n
<HTML>
<HEAD>
<TITLE>JUMP</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</HEAD>

<BODY bgcolor="#FFFFFF" text="#000000">
<B><A href=$ARGV[0]>$ARGV[0]</A></B>
<HR>
次のサイトにジャンプしようとしています。
</BODY>
</HTML>|;
770nobodyさん:03/08/09 21:41 ID:???
チルダってわかってるなら変換すりゃいいじゃん。%7Eだっけ。
あと、METAタグを使う理由がわからん…
771nobodyさん:03/08/09 21:43 ID:???
ヒアドキュメント知らないのかな?
772nobodyさん:03/08/09 21:49 ID:???
773nobodyさん:03/08/09 21:51 ID:???
>>772
っち・・・マルチだったのか・・・
774nobodyさん:03/08/09 22:47 ID:???
なんかろくなのが来ないね。
775sage:03/08/09 22:47 ID:jpYU10pt
sage
776nobodyさん:03/08/09 22:49 ID:GqH0THDn
至急教えて頂きたいんですが、
}elsif(a){
}elsif(b){
}elsif(b){
と表示するのと、
}elsif((a)||
(b)||
(c))){
と表示するのとでは効果は同じですよね?
上の方が分かりやすいから私は上を使っているんですが、
何かデメリットはあるんでしょうか?
777nobodyさん:03/08/09 23:03 ID:???
>>776
同じじゃない
778nobodyさん:03/08/09 23:13 ID:???
>776
俺なら下を使うね。
779momo:03/08/09 23:18 ID:???
上の補足です
http://hogehoge.com/jump.cgi?http://yahoo.com/~sub/
のリンクだと
http://yahoo.com/\~sub/となってしまい、うまくhttp://yahoo.com/~sub/に
飛ぶことが出来ないんです
780nobodyさん:03/08/09 23:25 ID:???
>>779 マルチがばれたらレスは付かない。
781nobodyさん:03/08/09 23:41 ID:???
>>779
失礼ですが貴方は hogehoge.comとyahoo.comのオーナー様でしょうか?
公に使用者が開示されているドメインネームを不当にドキュメント等に用いるマナー違反者が
増えていますので。 念のため確認です。
782nobodyさん:03/08/09 23:51 ID:???
まぁ向こうで誘導された感じではあるが…

#! /usr/local/bin/perl
print qq|Content-type: text/html; charset=Shift_JIS

<HTML>
<HEAD>
<TITLE>JUMP</TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF" text="#000000">

<B><A href=$ENV{'QUERY_STRING'}>$ENV{'QUERY_STRING'}</A></B>
<HR>
次のサイトにジャンプしようとしています。
</BODY>
</HTML>|;
exit;

これでいいかね
783あぼーん:あぼーん
あぼーん
784nobodyさん:03/08/10 00:09 ID:???
>>781
こいつ性格悪そうだな(w
785あぼーん:あぼーん
あぼーん
786あぼーん:あぼーん
あぼーん
787あぼーん:あぼーん
あぼーん
788あぼーん:あぼーん
あぼーん
789nobodyさん:03/08/10 02:36 ID:c9slSjrq
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}

# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;

# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;

# Player1
$kougeki1 = srand;

# Player2
$kougeki2 = srand2;
790nobodyさん:03/08/10 02:36 ID:c9slSjrq
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
791nobodyさん:03/08/10 02:37 ID:c9slSjrq
srand2;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;

($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
792nobodyさん:03/08/10 02:39 ID:c9slSjrq
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えたため、
Player1は喜んだ。「命!!」</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えたため、
Player1は喜んだ。「炎!!」</p></body>\n";
「つまんねー、馬鹿!」とやじが飛んだ。
print "</html>";
793あぼーん:あぼーん
あぼーん
794nobodyさん:03/08/10 03:13 ID:???
>>786-793
これも削除依頼かな…。死んでくれ
795nobodyさん:03/08/10 03:16 ID:???
これって、リア房か?
削除人は何やってる?
796nobodyさん:03/08/10 03:34 ID:???
かかわらんほうがいい。こう言うのは無視がいちばん堪えるんだから。
削除依頼だけしっかりやっときましょう。
797nobodyさん:03/08/10 03:43 ID:???
そうだね
所定の回数に達したらアク禁になるわけだし

俺と同じISPじゃなきゃいいが・・・
798nobodyさん:03/08/10 04:47 ID:???
>>797
マーフィーの法則。嫌な予感は当たる
799nobodyさん:03/08/10 09:57 ID:???
http://qb.2ch.net/test/read.cgi/saku/1030165467/74

俺の書き込みも削除依頼されとる・・・
800nobodyさん:03/08/10 10:05 ID:???
日付形式を変換しようとしています。

変換前の形式は、ちょっと特殊で年月日時分となってます。
0308100000

変換後は、クッキー形式にしたいです。
Thu, 01-Jan-1970 00:00:00 GMT;

年、月、日、時、分は、ほぼそのままでOKですが、曜日とGMTへの変換はどのように
すればよいのでしょうか?

よろしくお願いします。
801あぼーん:あぼーん
あぼーん
802nobodyさん:03/08/10 10:31 ID:9Q9rpSmQ
モジュールABCの関数を使いたいとき、
use ABC; と @ISA = ('ABC'); とは何が違うのですか?
803nobodyさん:03/08/10 10:38 ID:???
どうでもいいが、フォームから削除依頼しろよ。
804nobodyさん:03/08/10 10:39 ID:???
>>800
自前で計算して用意するか、
time()みたいに、1970年1月1日からの秒数に変換して、そこからlocaltimeで変換するか
805nobodyさん:03/08/10 10:40 ID:???
806nobodyさん:03/08/10 10:50 ID:???
>>802
後者の方法はサブクラス化という方法で ABC 内の関数を
オーバーライドしたい時などその方法を使用する
…ぐらいしか思いつかないな
807nobodyさん:03/08/10 13:03 ID:???
>>799
?あれにかかわったレスも削除して「なかったことに」してもらうのが一番。

ついでに削除屋さんは広告も一括して削除してくれたらありがたいなぁ。
808nobodyさん:03/08/10 13:25 ID:???
>>807
依頼者と違いますが、>>73に追加です。削除理由は同じです
削除対象アドレス:
http://pc2.2ch.net/test/read.cgi/php/1059043704/744-750
http://pc2.2ch.net/test/read.cgi/php/1059043704/759-761
http://pc2.2ch.net/test/read.cgi/php/1059043704/768-788 ←ここ!
http://pc2.2ch.net/test/read.cgi/php/1059043704/793

削除理由・詳細・その他:
巨大AA連続投稿(ほぼ同一人物)
荒らしをしている人物は夏の風物詩で、暫く粘着しそうなので、こまめに削除依頼出すのでよろしく。
809nobodyさん:03/08/10 14:29 ID:???
>>800
my ($year, $mon, $mday, $hours, $min) = unpack('A2A2A2A2A2', $packed_data);
で返った値をtimegm();につっこむ。$mon-1と$year+100を忘れずに。

>>802
useは@INCを辿ってモジュールを探して、
見つけたら読み込んでimportメソッドを実行する。
importされた関数、変数などが別名(エイリアス)で扱えるようになる。
コンパイル時に処理される。
@ISAはクラス内に呼び出されたメソッドがない場合、
@ISAを辿って目的のメソッドを探して実行するようになる。
実行時に処理される。
810nobodyさん:03/08/10 16:29 ID:???
>>809さん、どうも有り難うございます。勉強のために、以下のスクリプトを
作ってみました。

package AB;
sub aloc {
my ($pkg, $a, $b) = @_;
my $obj = bless {"a" => $a, "b" => $b}, $pkg;
return $obj;
}
1;
811nobodyさん:03/08/10 16:30 ID:???
(続き)
package X;
use AB;
@ISA = ('AB');
sub new {
my ($pkg, $a, $b, $x) = @_;
my $obj = $pkg->aloc($a, $b);
$obj->{"x"} = $x;
return $obj;
}
1;

#!/usr/bin/perl
use X;
$q = X->new('A', 'B', 'X');
$ans = $q->{'x'};
print "$ans\n"; # Xと表示、OK

試しに、パッケージXの@ISAの行をコメントにしてみると、alocが見つから
ないと言われます - 当然です。
そこで、パッケージABの2行目に、
use Exporter; @ISA = ('Exporter'); @EXPORT_OK = ('aloc');
を挿入し、パッケージXのuseを
use AB('aloc');
に変更してみたら、上手く行きました。

ということで、useと@ISAの機能は分かりましたが、今度は、ABやXのような
クラスを実装する場合、Exporterで輸出するのが良いのか、それとも@ISAで
継承するのが良いのか、が分からなくなりました。
812あぼーん:あぼーん
あぼーん
813nobodyさん:03/08/10 16:31 ID:c9slSjrq
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
814nobodyさん:03/08/10 16:32 ID:c9slSjrq
srand2;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;

($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
815nobodyさん:03/08/10 16:32 ID:c9slSjrq
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p></body>\n";
print "</html>";
816あぼーん:あぼーん
あぼーん
817nobodyさん:03/08/10 16:37 ID:???
ID:c9slSjrq 取り敢えず、NGワードっと、
↓ハイ、次の方どうぞ
818あぼーん:あぼーん
あぼーん
819あぼーん:あぼーん
あぼーん
820あぼーん:あぼーん
あぼーん
821あぼーん:あぼーん
あぼーん
822あぼーん:あぼーん
あぼーん
823nobodyさん:03/08/10 17:21 ID:???
>>c9slSjrq
にゅ速で美味しんぼ連載してるひと?
824nobodyさん:03/08/10 17:28 ID:???
だいたいPerlで変なゲーム作ろうとしてる意図が不明。
825nobodyさん:03/08/10 17:47 ID:???
キチガイのやることを理解などできるわけがない。
826nobodyさん:03/08/10 19:14 ID:???
ID:c9slSjrqの情報調べてみたけど、やっぱり小学生だったよ。
827nobodyさん:03/08/10 20:43 ID:???
>>810-811
継承が必要なら@ISAを使う、隠蔽したいなら使わない。かな。
(深く考えた事ないですね。オブジェクト指向なら継承しとけみたいな。)

モジュールはexportした方が便利かと。
(というか、するべきものだと思ってました。)

# 蛇足ですがalocはallocでは。
828nobodyさん:03/08/10 21:37 ID:???
>>827さん、レス有り難うございます。

「そこで、パッケージABの2行目に、
use Exporter; @ISA = ('Exporter'); @EXPORT_OK = ('aloc');
を挿入し、パッケージXのuseを
use AB('aloc');
に変更してみたら、上手く行きました。」
と書きましたが、実行できるようにするだけなら、ここまでしなくても、
alocの呼び出しを、AB::alocとするだけで、充分ですよね。

「継承」の意味が良く分からないです(@ISA使わなくても、useで充分じゃない
のかなって思ってしまいます)。
オブジェクト指向の本質が分かってないんでしょうね。

# ご指摘のとおり、alocはallocのつもりでした。
829nobodyさん:03/08/10 22:08 ID:???
>>828
Hoge.pm
--------------------------------
package Hoge;
import{ エクスポートな処理 }
--------------------------------
というものがあったとしたら、
use Hoge;
は、
BEGIN{
require Hoge;
Hoge->import;#または、import Hoge;と書いてもあり。
}
を実行しているだけ。
importメソッドがなけりゃ、
BEGIN{ require Hoge; }
と同じ。
だから、クラスによって違うのさ。
830nobodyさん:03/08/10 22:21 ID:???
とあるスクリプトで時間を計算して表示させているのですが、
例えば10.99時間を10.59時間という風に小数点以下の部分を
きちんと分にする方法ってありませんか。

今は

my(@time_temp) = split(/\./, $time);
$time_temp[1] = int(60 * $time_temp[1] / 100);
$time = $time_temp[0].'.'.$time_temp[1];

とかやってるのですがもう少しすっきり出来たら良いなあと。
831nobodyさん:03/08/10 22:27 ID:???
10.99時間=10.59時間じゃないだろ
何がしたいのか意味不明
832nobodyさん:03/08/10 22:27 ID:???
先程それではおかしいと言う事で表示側で
$time_temp[0]時間$time_temp[1]分
としたので三行目は無しで。
833nobodyさん:03/08/10 22:48 ID:???
if(length($time_temp[1]) eq "1"){$time_temp[1] = $time_temp[1] * 10;}
これ加えたほうがいいかと
834nobodyさん:03/08/10 22:54 ID:???
print "何時間?\n>";
$time =<>;
chomp($time);
my(@time_temp) = split(/\./, $time);
if(length($time_temp[1]) eq "1"){$time_temp[1] = $time_temp[1] * 10;}
$time_temp[1] = int(60 * $time_temp[1] / 100);
print "$time_temp[0]時間$time_temp[1]分\n";
835nobodyさん:03/08/10 22:56 ID:???
$time = sprintf(qq{%02d\.%02d},int($time),($time - int($time))*60);
836nobodyさん:03/08/10 22:57 ID:???
>>836
動かしてみ
837836:03/08/10 22:58 ID:???
ミスった。
>>835
838nobodyさん:03/08/10 23:00 ID:???
>>828
http://perl.infoware.ne.jp/documents/perlboot.ja.html

>>830
$time = sprintf '%02d 時間 %02d 分', $time, ($time * 60) % 60, $time;
839nobodyさん:03/08/10 23:18 ID:64afxySW
perlをダラダラ書いてたら、
一つのファイルで、1500 行
を超えてしまいました。
行数が多いと何か不都合は起きますでしょうか?
お教え下さい。
840nobodyさん:03/08/10 23:27 ID:STOMuStS
素朴な疑問。なんで、
print qq|<a href="hoge">fuga</a>|;
ってやればコードが見やすいのに、
いちいち
print "<a href=\"hoge\">figa></a>";
ってやってる人が多いんですか?
qqのほうが、コーディングもよけいなことあんまり考えなくて、はやくすむと思うんだけど
841nobodyさん:03/08/10 23:30 ID:???
>840
それを見やすいと思うのはPerlユーザーだけ。
俺は使い分けてるけどね。
842nobodyさん:03/08/10 23:30 ID:???
>>838
最後の$time要らん。

>>839
そのスクリプトを保守する人間が困らないのなら別に問題無し。

>>840
最初に覚えた方法が一番分かり易いと思い込んでいる人は多い。
もちろんその方法しか知らない人も多い。
843840:03/08/10 23:41 ID:???
>>841-842 レスさんくす。
なるほどねー。
自分最初にPerlおぼえて、
そのあとちょっとPHPかじって、
Javaおぼえようかなーて思ってる程度だからなー。
844nobodyさん:03/08/10 23:42 ID:???
>>841
C#にも@""構文があるのに。Perlユーザだけとは心外だな。
845nobodyさん:03/08/11 00:55 ID:???
print "何時間?\n>";
$time =<>;
my(@time_temp) = split(/\./, $time);
chomp($time);
if(length($time_temp[1]) eq "1"){$time_temp[1] = $time_temp[1] * 10;}
time = sprintf '%02d 時間 %02d 分', $time, ($time * 60) % 60, $time;
print "<a href=\"hoge\">figa></a>";
$time_temp[1] = int(60 * $time_temp[1] / 100);
print "$time_temp[0]時間$time_temp[1]分\n";
846あぼーん:あぼーん
あぼーん
847あぼーん:あぼーん
あぼーん
848nobodyさん:03/08/11 00:59 ID:???
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}

# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;

# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;

# Player1
$kougeki1 = srand;

# Player2
$kougeki2 = srand2;
849nobodyさん:03/08/11 00:59 ID:???
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
850nobodyさん:03/08/11 01:00 ID:???
srand2;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;

($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
851nobodyさん:03/08/11 01:02 ID:???
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player1は<big>$kougeki1</big>のダメージを受けて混乱した。
<p>Player1は<big>$kougeki1</big>のダメージで野原でクソをし始めた。
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを受けて裸踊りを始めた。
<p>Player2は<big>>$kougeki2</big>のダメージで光浦なみの女にレイプし始めた。</p></p></body>\n";
print "</html>";
852nobodyさん:03/08/11 01:11 ID:???
>>840
単に知らないからだと思うが。
853nobodyさん:03/08/11 10:23 ID:???
 
854nobodyさん:03/08/11 12:01 ID:???
>>839
長くなりすぎると動きません。500行以内じゃないと動きにくいです。
ちゃんと勉強しろ!オタクやろう!!
855nobodyさん:03/08/11 12:03 ID:vd5Ibrol
             ________________
     ∧_∧∩ /
    ( ´∀`)/<真珠のPerlと何が違うんですか!?
 _ / /   /   \___________________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
856nobodyさん:03/08/11 12:04 ID:???
      , ' s    \::::::::::::i
     /"""''/ーナ-t----|
.    /   ,.‐   ⌒    /ヘ
    {入|(・)  (・)    |||||||   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
      |⊂⌒◯-------9)  <    まだ、動かないぜ!ベイビー!!
      | |||||||||_    |    \_______
       \ ヘ_/ \ / ̄`\、
.        \、__ i⌒i/, -'"~  `ヽ、
       ,.‐'´   i--i        \
       `〈ヽ, -'"~T  ヽ、 , -'" ~ `ヽ、
       / ( ̄ T   iヽ、__     \.
     /    ( ̄T   |   `ヽ、    }
    く       ̄ `ヽ、/__        /
857nobodyさん:03/08/11 12:07 ID:???
   ___________________
   || ($damage < 0) and ($damage = 0);
   || $defense->{'HP1'} -= $damage;はダメージ
   ||           ∧_∧   。
   ||         (  ^^ )/
    ̄ ̄ ̄ ̄ ̄ ̄ (    つ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                /  ̄ ̄ ̄ ./| lヽ──────────────
                | ̄ ̄ ̄ ̄| | | ダメージを受けると、糞をもらします
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|____|/ |
                        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ∧ ∧    ∧,,∧   ∧ ∧
    (・,, ∧▲  ミ  ∧ ∧ (  ∧ ∧
  〜(_(  ∧ ∧_( ∧ ∧_ミ・д・∧ ∧
    @(_(,,・∀・)@ (   *)〜ミ_ (   ,,)
      @(___ノ 〜(___ノ    〜(___ノ
858nobodyさん:03/08/11 13:19 ID:???
2chって、鯖/カテゴリ/.../dat/
でアクセスして表示しますよね?
これってこの全てのディレクトリの下にindex.htmlか.cgiかなにかを置いてあって、
それを表示してるってことですよね?
でも
鯖/カテゴリ/.../dat/
これでアクセスしたときと、
鯖/カテゴリ/.../dat/index.htmlでアクセスしたときと、
表示が微妙に違うんです。

どういう仕組みで表示させてるんでしょうか?
859nobodyさん:03/08/11 13:42 ID:???
>>858
PATH_INFO
詳しくは CGI スレで。
860nobodyさん:03/08/11 13:56 ID:???
861nobodyさん:03/08/11 14:06 ID:???
どーもthxです。勉強してきます
862nobodyさん:03/08/11 14:08 ID:???
>>860
あ、なるほど本来(?)なら
bbs=php&key=1059043704
と引数を渡すところを、
PATH_INFOってのを使って、
/php/1059043704/
こういう形で引数を渡すように設定できる

そういうことですね。勉強になりました。
863nobodyさん:03/08/11 18:17 ID:???
>>854
俺は14874行の
perlスクリプトを動かしてるが、なんてことはなく
サクサク動いてるぞ。
864nobodyさん:03/08/11 18:26 ID:???
単純に行数じゃ判断できないしなぁ。
改行だけなら1〜2バイトだし。
行数よりもファイルサイズが重要でないかい?
865nobodyさん:03/08/11 18:41 ID:???
2113行、60KBでサクサク
866nobodyさん:03/08/11 19:59 ID:???
10000行、20KBで以下略。
867nobodyさん:03/08/11 20:01 ID:???
2701行、85Kbでサクサク
868863:03/08/11 20:02 ID:???
14874行って書いたけれど、
サイズは623KBだ。
サクサク。

>>854
はマシンのスペックがよっぽどしょぼいか、
しょっぱいスクリプトの書き方してるんじゃないかな。
869nobodyさん:03/08/11 20:04 ID:???
10000行で20KB
ってことは、10000行の改行だけのスクリプトってことだな
870nobodyさん:03/08/11 20:04 ID:???
あ、ちがった。
KBとBの単位をまちごた。
871nobodyさん:03/08/11 21:26 ID:???
最近UTF-8でスクリプト書いても動く事に気付きました。
で素朴な疑問ですがやはりEUCでないとどこかで不都合起きたりしますか?
今のところ何も起きてないけど気になって。
872nobodyさん:03/08/11 21:34 ID:???
UTF-8だと問題ないでしょ。
さらに
perl5.8を使って、
use Encode;
でさらに幸せになれます。
873nobodyさん:03/08/12 04:00 ID:???
たった50行ですけど、重くて全然動かないですよ。
パソコンの環境によっては500行以下にしなさいってことだ。
874あぼーん:あぼーん
あぼーん
875あぼーん:あぼーん
あぼーん
876あぼーん:あぼーん
あぼーん
877あぼーん:あぼーん
あぼーん
878あぼーん:あぼーん
あぼーん
879あぼーん:あぼーん
あぼーん
880あぼーん:あぼーん
あぼーん
881あぼーん:あぼーん
あぼーん
882あぼーん:あぼーん
あぼーん
883あぼーん:あぼーん
あぼーん
884nobodyさん:03/08/12 04:50 ID:???
50行で動かないってどういうスクリプトだそりゃ。
または博物館行きのスペックのマシンでも使ってんのか?
885nobodyさん:03/08/12 04:53 ID:???
ほっとけ
886nobodyさん:03/08/12 04:55 ID:???
>>884
とてつもなく巨大な配列とか使ってたりして(w
887nobodyさん :03/08/12 05:17 ID:???
無限ループすれば一行でもおもくできるが?

つか、おめぇAA貼ってる馬鹿だろ。みんな放置汁
888nobodyさん:03/08/12 05:21 ID:???
>>874-882までまた削除依頼でいいだろ
今度はコピペとして依頼してくれって言ってるから、そろそろ(ry
889nobodyさん:03/08/12 05:27 ID:???
わざと重くするなら無限ループでもなんでも簡単だが、
50行でうごかねーって騒いでるのは
わざと重くしてるのか?
890nobodyさん:03/08/12 10:40 ID:???
すいません、CPANって、なんて読むのでしょうか?
しーぱん?しーぴーえーえぬ?
891nobodyさん:03/08/12 10:50 ID:???
しーぱん
892nobodyさん:03/08/12 10:55 ID:???
しーぽん
893nobodyさん:03/08/12 11:00 ID:???
シパーソ
894nobodyさん:03/08/12 11:41 ID:???
>>890
CPAN (See-Pan)
895あぼーん:あぼーん
あぼーん
896あぼーん:あぼーん
あぼーん
897あぼーん:あぼーん
あぼーん
898あぼーん:あぼーん
あぼーん
899あぼーん:あぼーん
あぼーん
900あぼーん:あぼーん
あぼーん
901あぼーん:あぼーん
あぼーん
902あぼーん:あぼーん
あぼーん
903nobodyさん:03/08/12 11:55 ID:???
粘着質だな
904nobodyさん:03/08/12 12:02 ID:???
そのうち板ごとアク禁されるでしょ
905nobodyさん:03/08/12 13:34 ID:???
>>874以降の分、削除依頼してきた
906nobodyさん:03/08/12 14:43 ID:???
激しくPerl初心者で悪いんだが、所有者がWebになってるディレクトリを削除するために(FTPからは削除できない)
それ用の簡単なプログラムを書いてみたんだが500InternalServerErrorになる。ソースをうpするのでご教授願いたい。
ttp://amici.dip.jp/~takuho/cgi/hakoniwa_sakujo.txt
KENTWEB配布の文法チェッカーでは異常なしらしいんだが…。
907906:03/08/12 14:44 ID:???
失敬、アドレス間違えた。
正しくは、
ttp://nd22.abz.jp/cgi/hakoniwa_sakujo.txt
908nobodyさん:03/08/12 14:56 ID:???
>>906
2行目に
print "Content-type: text/plain\n\n";
を挿入
909 :03/08/12 14:57 ID:???
だな
910nobodyさん:03/08/12 15:00 ID:???
>>906
UNIXで動かしてるのか?
と言うより、CGIとして起動してるのか?

それなら>>908のは必須だよ。
911nobodyさん:03/08/12 15:09 ID:Ehp7RR1Q
えー、よく分からないんだが、Windowsで書いたPerlのスクリプトを、Linuxのサーバにうpして走らせてる、でいいのかな?
あと、>>908の言うとおりにスクリプトを変更して走らせたら、なんかDLしますか?みたいなウィンドウが出てきたので、txt/plainをtxt/htmlにしてみたら一応走った。
$sakujp1から$sakujp9までを表示させてみたら全部0 (´Д`;)マジカヨ
912nobodyさん:03/08/12 15:13 ID:???
うが、失敬あげてもた
913nobodyさん:03/08/12 15:17 ID:???
>>911
ディレクトリは空なんだろうね。
914nobodyさん:03/08/12 15:21 ID:???
>>911
txtじゃなくtextなのだが
915nobodyさん:03/08/12 15:22 ID:???
>>913
空じゃないといけないのかw
スクリプト書き直します

>>914
ああ、こりゃまた失敬。
ちゃんとtextって書いてますよ。
916nobodyさん:03/08/12 16:29 ID:dyQ6VIzM
定数のみを記載したファイルを各CGIにて読み込んで、
各ページで内容を統一したいのですが、以下の方法では
エラーとなってしまいました。
どなたかご教授お願いします。

# main.cgi

require "inc.pl";
・・・・

# inc.pl
my $title = "welcome";
・・・・

よろしくです。
917nobodyさん:03/08/12 16:29 ID:???
落ち着いてから喋れよ
918nobodyさん:03/08/12 16:44 ID:RiEGcXgN
my %hage = (
 a => "hage",
 b => {
  c => "$hage{a} /hage",
 },
);

こんな感じで$hage{b}{c}で、$hage{a}を使いたいけど、
出来ませんよね?何かいい方法有りませんか?
919nobodyさん:03/08/12 16:47 ID:???
my の意味わかってる?
なんでつけてんの
920919:03/08/12 16:50 ID:???
あ、、>>916あてね
921nobodyさん:03/08/12 16:53 ID:???
>>918
どうしても初期化時にやりたいの?
922nobodyさん:03/08/12 16:56 ID:???
>>918
my $zura = "hage";
my %hage = (
 a => $zura,
 b => {
  c => "$zura /hage",
 },
);
923916:03/08/12 17:07 ID:???
解決しました。

根本的に間違えていました。

まず、パッケージ宣言をしていませんでした。
あと、>>920さんのいうとおり、パッケージとして読み込む
内容に対してmyにしていました。

924918:03/08/12 17:10 ID:???
>>919
実はあんまいみ分かって使ってないかも(汗

サブルーチンの中でその間数内でしか使わない変数は、
myを付けるようにしてる。あと、use strict;してると、
my付けなきゃ怒られるから、、、

>>921-922
一つにまとめた方がすっきりしていいかなーって思いましてね。
やっぱ無理ですかね?
925918:03/08/12 17:11 ID:???
>>920
あ、俺宛じゃないのね。
失礼。
926nobodyさん:03/08/12 17:35 ID:???
>>925
ついでに勉強しておくと良いと思われ。
キーワードはvarsとかourあたりで。
927923:03/08/12 19:10 ID:dyQ6VIzM
解決したのですが、別の問題が・・・

requireで呼び出す定数の記載されたplファイルが、
ブラウザから丸見えになってしまいます・・・
(見られたくない内容が記載されています)

属性を600にしたら動かないようですし。

ブラウザから参照できないファイルにできないものですか?

よろしくお願いします。

928nobodyさん:03/08/12 19:18 ID:???
全然コーディングと関係ないぞ
929923:03/08/12 19:23 ID:dyQ6VIzM
>>928 失礼しました。流れでついつい聞いてしまいました。

ちなみに拡張子をcgiにしてみると実現できました。
930nobodyさん:03/08/12 19:41 ID:???
>>927
そこから先はスレ違いの内容だ。
931nobodyさん:03/08/12 19:42 ID:???
.htaccessで観覧不可にすればいーじゃん
932nobodyさん:03/08/12 20:11 ID:???
>>932-938まで削除依頼済み
933nobodyさん:03/08/12 20:23 ID:???
>>940
運用情報にて規制対象にするのがよいかと。
934nobodyさん:03/08/12 20:31 ID:???
>>941
それはいいね。
運用情報をちょっと見てきたけど、コピペや広告がビシバシと
アク禁になっててワラタ。
今後も続いたらそっちに回そう。
935nobodyさん:03/08/12 20:50 ID:y42wbWjQ
my $ref_mail = $pop3->get($num);
my $mail = join(/ /, @{$ref_mail});

とかくと、成功したり失敗したりします。
エラーが出た場合のエラー内容は下記のとおりです。

Can't use an undefined value as --.cgi reference

これについて調べてみたのですが、どうも理解が
できません。
定義するとエラーが出てしまいますし、初心者の私に
どうか教えていただければ幸いです。
936nobodyさん:03/08/12 20:57 ID:???
あるところに糞スレの好きな男がいた。
男は「(都の人のする)糞スレというものをひとつ立ててみよう」と思った。
男の女房が「(天さかる鄙にすむわたしのような教養のない女でもわかるが)都の人はそんなことをしない(と思う)」
と諌めたが、男はきかない。
「(釈迦入滅以来うだつのあがらない自分という男にほとほと愛想が尽きたが)
ここで糞スレを立てれば(都の人のように)頓知がきいていると世の賞賛を受けるだろう」
と糞スレをたてた。

はたして翌日、>2以降、罵倒の嵐だった。
>1も無駄なことをするものだなあと(何故か判らぬが突然出てくる)横川の僧都(そうず)は嘆いた
937nobodyさん:03/08/12 22:05 ID:???
>>942
でも担当★がちょとあんぽんたんだったので★を剥奪されたそうです(w
938nobodyさん:03/08/12 22:14 ID:???
透明削除入れたので、レス番がずれました。
申し訳ないです。

>>937>>932-934辺りへのレスです。
939nobodyさん:03/08/12 22:35 ID:???
クエリーストリングを、%inに入れたとして、以下のコードを実行すると、

sub htmlspecialchars{
  #PHPの同名関数と同じ動きをします。
  my ($letter) = $_[0];
  $letter =~ s/&/&/g;
  $letter =~ s/"/"/g;
  $letter =~ s/'/?/g;
  $letter =~ s/</</g;
  $letter =~ s/>/>/g;
  return $letter;
}

foreach $key (keys %in){
  &jcode::convert(\$in{$key}, "sjis");
  print qq|<input type="hidden" name="$key" value="|. &htmlspecialchars(\$in{$key}) .qq|">\n|;
}
<input type="hidden" name="country" value="SCALAR(0x827cdbc)">
<input type="hidden" name="gender" value="SCALAR(0x827cd2c)">
となってしまうのですが、どこがいけないのでしょうか・・・?
940nobodyさん:03/08/12 22:43 ID:???
>>938
乙。
あぼーん<>あぼーん<>あぼーん<>あぼーん<>あぼーん<>
を追加加工は出来なかったのね(w

>>939
リファレンスで渡してるやん。。。
941nobodyさん:03/08/12 23:00 ID:???
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}

# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;

# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;

# Player1
$kougeki1 = sentaku;
$kougeki1 = $KIK2 = 100;
$PAN2 = 40;

# Player2
$kougeki2 = $KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;
942nobodyさん:03/08/12 23:00 ID:???
sentakud;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
943nobodyさん:03/08/12 23:07 ID:???
sentaku2;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;
944nobodyさん:03/08/12 23:08 ID:???
($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;

# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player1は<big>$kik1</big>のダメージを受けて混乱した。
<p>mona-は<big>$panti1</big>のダメージで野原でクソをし始めた。
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p>
<p>Player2は<big>>$kik2</big>のダメージを受けて裸踊りを始めた。
<p>Player2は<big>>$pantti2</big>のダメージで光浦なみの女にレイプし始めた。</p></p></body>\n";
print "</html>";
945nobodyさん:03/08/12 23:09 ID:???
>>935

それはその下のファイルを使うな、という意味です。
そのファイルは使えないので、そのファイルを全部削除して、
1から書き直すことをすすめます。
946nobodyさん:03/08/12 23:46 ID:???
配列の中身を順番に書き出すにはどうすれば良いんでしょうか。

while (@test){
 print\n;
}

とかやってみたのですがPCごと固まってしまいました…。
あとハッシュの中身を例えば
キー:値
のような形のリストとして出力するような方法も知りたいです。
#キーは不定
947nobodyさん:03/08/12 23:55 ID:???
>>946
foreach(@test){
print $_,"\n";
}
948nobodyさん:03/08/13 00:11 ID:0XDiwwzH
foreach $key(keys %HASH){
print $key." = ".$key{$key}."\n";
}
949nobodyさん:03/08/13 00:20 ID:???
>948
間違ってるぞ。
foreach $key(keys %HASH){
print "$key=$HASH{$key}\n";
}
950nobodyさん:03/08/13 00:23 ID:???
while (my($k, $v) = each %hash) {
print "$k:$v", "\n";
}
951nobodyさん:03/08/13 00:23 ID:???
>>943
ハードリファレンスやシンボリックリファレンスとして使用する値は、
定義済みの値でなければなりません
952nobodyさん:03/08/13 00:25 ID:???
>>945
あるいは
while ( @test ) {
  pop shift @test."\n";
}

>>946
あるいは
while ( ($key, $val) = each %HASH ) {
  print $key." = ".$val."\n";
}
953952:03/08/13 00:26 ID:???
失礼。訂正です。

>>945
あるいは
while ( @test ) {
  print shift @test."\n";
}
954nobodyさん:03/08/13 00:26 ID:0XDiwwzH
お。。
まちがってた。
thxでごんす。
955946:03/08/13 00:28 ID:???
ありがとうございました。
whileとforeachの違いがイマイチわかりづらいですが
ラクダ本でも見てゆっくり勉強する事にします。

ハッシュの方はKeys関数のところみたら見事に載ってました。
わざわざすみませんでした…。
956952:03/08/13 00:29 ID:???
たびたび失礼。訂正です。

>>945
あるいは
while ( @test ) {
  print shift @test;
  print "\n";
}
957nobodyさん:03/08/13 01:30 ID:???
>>945
@testが小さければ
print join("\n", @test, '');
958nobodyさん:03/08/13 10:45 ID:???
>>946

while (<>) {
print $_ . "\n";
}
のつもりで書いたのか。それならば。
while (shift @test) {
print $_ . "\n";
}
959nobodyさん:03/08/13 12:13 ID:???
>>946は何でかたまったのか自分でわかってる?
960nobodyさん:03/08/13 16:15 ID:???
スレ違いって言われたのでこちらで改めて質問します。

KENTさんのWeb Patioを使っています。
regist.cgiにおいて、
「初心者」という文字列を含む名前をエラーではじきたいのですが、
どうすればいいでしょうか?

一応、「初心者」であればエラーを返すようにしています。
if ($i_nam eq "初心者") { &error("任意の名前でお願いします"); }
この場合だと「PC初心者」をはじくことができません。
正規表現を使わなければいけないというのはわかっているのですが、
if ($i_nam =~ /初心者/)
ではダメなんでしょうか?

よろしくお願いします。
961nobodyさん:03/08/13 16:31 ID:???
>>960
どうだめだったの?
漢字コードは合わせてる?
962nobodyさん:03/08/13 16:38 ID:???
>>960
この場合、正規表現は使わない方が低コスト。
全部EUC-JPかUTF-8で扱っているとして

if (index($i_nam, '初心者') >= 0) {
&error("任意の名前でお願いします");
}
963nobodyさん:03/08/13 16:40 ID:???
子プロセスを作って、平行して違う処理をさせたいのですが、
親からも子からも見える変数というのは、そのままでは実現できないのでしょうか?

小難しいのでビデオ予約に例えますが、
>親はユーザとsocketで通信をして、予約リストの追加削除修正を行い、
>子は時計を監視しつつ、時間になったら録画をスタートさせる
この"予約リスト"を親子で共有したいのです。
964nobodyさん:03/08/13 16:43 ID:VxpLVgAp
>>960

初心者ははじくことができません。
そんな初歩的な質問は板違いです。どこか行ってください。邪魔です。
WEB板にいって、二度と来ないでください。
965nobodyさん:03/08/13 16:45 ID:???
>>963

できません。共有はできません。どちらかあきらめてください。
あなたも欲ばりですね。
そんな初歩的な質問、こんなところでしないでください。どこか行ってください。
966nobodyさん:03/08/13 16:46 ID:???
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}

# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;

# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;

# Player1
$kougeki1 = srand;

# Player2
$kougeki2 = srand2;
967nobodyさん:03/08/13 16:46 ID:???
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
968nobodyさん:03/08/13 16:46 ID:???
srand2;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;

($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
969nobodyさん:03/08/13 16:46 ID:???
>>963
ファイル使っちゃあかんの?dbmとかbdbとか
あと時計監視はちょっと、、、cronとか使えないの?
970nobodyさん:03/08/13 16:47 ID:???
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player1は<big>$kougeki1</big>のダメージを受けて混乱した。
<p>Player1は<big>$kougeki1</big>のダメージで野原でクソをし始めた。
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを受けて裸踊りを始めた。
<p>Player2は<big>>$kougeki2</big>のダメージで道を歩いていた女にレイプし始めた。</p></p></body>\n";
print "</html>";
971nobodyさん:03/08/13 16:48 ID:???
∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
<                                     >
< 動カンカッタ>>720-736ーーーーーーーーー!!    >
<                                     >
  ∨∨∨∨∨∨∨∨∨∨∨\  /∨∨∨∨∨∨∨∨∨∨∨
          /:|.       | |     /:|
        /  .:::|       ∨    /  :::|
        |  ...:::::|           /   ::::|
       i       ̄ ̄⌒゙゙^――/    ::::::::|
      /_,,___       . _,,,,__,_     :::::::::::\
      /   ゙^\ヽ..  , /゙   ¨\,.-z   ::::::::::\
      「 ●    | 》  l|  ●    ゙》 ミ..   .::::::\
     /i,.      .,ノ .l|  《       ..|´_ilト    ::::::::::\
    / \___,,,,,_/ .'″  ^=u,,,,_ v/..       :::::::::::::l!
    |            ̄ ,,、         i し./::::::::.}
   |  /  ,,____ _,/ ̄ \ \      ノ (  ::::::::::|
    |  |.. | /└└└└\../\  \    '~ヽ ::::::::::::::}
    |   .∨.|llllllllllllllllllllllllllllllllllllllll|       ::::::::::{
    |    |.|llllllllllll;/⌒/⌒  〕          :::::::::::}
     |   |.|lllllllll;   ./ .   . |          ::::::::::[
     .|   |.|llllll|′  /    . |    .|      :::::::::::|
     .|   |.|llll|    |     .∧〔   /    :::::::::::::/
    / }.∧lll    |    ../ /  /   :::::::::::::::::\
   /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
      ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::
972nobodyさん:03/08/13 16:48 ID:p0VVcbYX
スレンダーなロリ体形ながらもオマンコ方はしっかり発達しちゃってます。
大きなオチンチンを喉の奥までくわえ込んでのフェラは大人顔負けですぞ。
挿入シーンは少ないながらも小さなオマンコにしっかり挿入されているシーンが勃起モノ!
若い娘はいいですな。

無料ムービーはこちら!
http://www.cappuchinko.com/
973960:03/08/13 16:50 ID:???
962さん、どうもありがとうございます!
解決しました。
974nobodyさん:03/08/13 16:55 ID:???
                                                                       
975nobodyさん:03/08/13 17:32 ID:???
荒らしではないんだが、レスあぼ〜ん依頼してる方へ
なるべく一度に依頼してくれませぬか?
かちゅだとあぼーんするたびにスレ再取得しなくちゃならないから大変なのよ
976nobodyさん:03/08/13 17:57 ID:???
>>975
ものすごく自分勝手なやつだな。
977nobodyさん:03/08/13 18:47 ID:???
>>963
名前付きパイプ(ネームドパイプ)
http://www.kt.rim.or.jp/~kbk/perl5.doc/perlipc.html#Named_Pipes
クックブックレシピ16.11
か、
sysV IPC
http://www.kt.rim.or.jp/~kbk/perl5.doc/perlipc.html#SysV_IPC
クックブックレシピ16.12
(使ったことないので、どんなものか知らなかったり。使った感想きぼん。)

リアルタイムでなければファイルに一票。
978nobodyさん:03/08/13 19:41 ID:???






















979nobodyさん:03/08/13 19:56 ID:???
>>976
( ゚Д゚)ハァ?
つーか、削除依頼なんかすんな。透明あぼーんでもしたらいいだろ。
980nobodyさん:03/08/13 19:57 ID:???
>>979
お前が使用ブラウザを変えればいいだけだ。
981nobodyさん:03/08/13 19:59 ID:???
ウンコスレ
982nobodyさん:03/08/13 20:12 ID:???
バカはあぼーんしないといけないので。
つーか、かちゅなら改造して
再取得しても「あぼ〜ん」を保持するようにしたらいいじゃん?
983nobodyさん:03/08/14 02:32 ID:???
#!/usr/bin/perl

# CGIヘッダの出力
print "Content-type: text/html\n\n";

while($HP1 > 0) and ($HP2 > 0){
srand1;
srand2;
}

# Player1
$HP1 = 400 - $kougeki1;
$KIK1 = 60;
$PAN1 = 20;
$DF1 = 10;

# Player2
$HP2 = 300 - $kougeki2;
$KIK2 = 100;
$PAN2 = 40;
$DF2 = 0;

# Player1
$kougeki1 = srand;

# Player2
$kougeki2 = srand2;
984nobodyさん:03/08/14 02:32 ID:???
srand;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN1'} - $defense->{'$DF2'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK1'} - $defense->{'$DF2'};
}
985nobodyさん:03/08/14 02:32 ID:???
srand2;
if($mode == 1){
$offense = \%you;
$defense = \%my;
}elsif($mode == 2){
$offense = \%my;
$defense = \%you;
}
if( int(rand(2)) ){
#punch
$damage =
$offense->{'$PAN2'} - $defense->{'$DF1'};
if(!$rand = int(rand(5))){
#half
$damage = int($damage / 999);
}elsif($rand < 3){
#miss
$damage = "";
}
}else{
#kick
$damage =
$offense->{'$KIK2'} - $defense->{'$DF1'};
}

($damage < 0) and ($damage = 0);
$defense->{'HP1'} -= $damage;

($damage < 0) and ($damage = 0);
$defense->{'HP2'} -= $damage;
986nobodyさん:03/08/14 02:33 ID:???
# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>対戦バトル</title></head>\n";
print "<body>
<p>Player1:体力は$HP1です</p>
<p>Player2:体力は$HP2です</p>
<p>Player1は<big>$kougeki1</big>のダメージを与えた。</p>
<p>Player1は<big>$kougeki1</big>のダメージを受けて混乱した。
<p>Player1は<big>$kougeki1</big>のダメージで友達のトイレではみ出したクソをし始めた。
<p>Player2は<big>>$kougeki2</big>のダメージを与えた。</p>
<p>Player2は<big>>$kougeki2</big>のダメージを受けて裸踊りを始めた。
<p>Player2は<big>>$kougeki2</big>のダメージで友達の女にレイプし始めた。</p></p></body>\n";
print "</html>";
987nobodyさん:03/08/14 02:35 ID:???
       | 通報しますた!
       \
         ̄∨ ̄ ̄ ̄ ̄ ̄
              
         ∧_∧
          ( ´Д`)
        /,  /
        (ぃ9  |
       /   /、
       /   ∧_二つ
      /   /
      /   \
     / /~\  \
     / /   >  ) 
   / ノ   / /
  / /  . / ./.
  / ./    ( ヽ、
 ( _)     \__つ
988nobodyさん:03/08/14 02:37 ID:???
。(´・ω・`) 。(´・ω・`) 。(´・ω・`) 。(´・ω・`) 。(´・ω・`)
   (´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)
        ○(´・ω・`)○(´・ω・`)○(´・ω・`)○(´・ω・`)○(´・ω・`)○
             。(´・ω・`) 。(´・ω・`) 。(´・ω・`) 。(´・ω・`) 。
              (´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)
PHPって携帯会社の名前じゃないのか!?(´・ω・`)o(´・ω・`)o(´・ω・`)o
              ○       o(´・ω・`)o(´・ω・`)○ o   ○
                          (´・ω・`)○(´・ω・`)
                    ○ 。  o    o ○。  

             /::. ソ . :;;ヽ      
             /::.     ..:::;;;ヽ
             /::.      ..::;;;;ヽ
           /::.        ..::::;;;;i
           (::.        ..::;;;丿
            >::...___..::::;;;イ
            !ヾ. ̄⌒__ ̄彡| 
             iミ:::ミC= ≡..::: )
            |::: 丶ヽ  ..:ヽ )      
            |::: ('    ( ::;;;|
            |::: | ミ   ヽ\|
            |::: 丶ヽ  ..:ヽ )      
            ( \  l. |  ..:;;;;;;|
            |::\∨丿 ″..:;;;;;|
            |::: ( (  ゙ ..:;;;;;|
            |::: ( (  ゙ ..:;;;;;|
          .彡.|:::   i l   :::;;;;;|ゞ巛ミ
        巛从ミ彡ミ彡从巛彡ミ彡ミ彡》》
      巛巛ミ人ミ彡巛彡从ミ巛ミ人ミ》》》》
     巛彡巛彡从ミ》彡彡巛ミ人ミ彡ミ从》》
989nobodyさん:03/08/14 02:42 ID:???
このスレはここで終了にしましょう
ーーーーーーーーーーーーーー終了ーーーーーーーーーーーーー

1、荒らしが住みついている
2、めちゃくちゃ荒れるのはわかっている
3、いるやつが無脳で役立たずが多い
4、存在価値なし!!

5、チンコ!!

以上をもって、全て終了とさせてもらいました。
990nobodyさん:03/08/14 03:05 ID:???
すげー勢いでレス番欠けてる( ´ー`)
991nobodyさん:03/08/14 03:14 ID:???
住みついてる荒しってパンチキックのやつだけだろ?
992nobodyさん :03/08/14 05:36 ID:???
で、次スレ立てるん?
993nobodyさん:03/08/14 05:46 ID:???
 
994nobodyさん:03/08/14 05:46 ID:???
                                                        
995nobodyさん:03/08/14 05:47 ID:???


996nobodyさん:03/08/14 05:47 ID:???
























997nobodyさん:03/08/14 05:47 ID:???
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
998nobodyさん:03/08/14 05:47 ID:???
ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
ttttttttt
999nobodyさん:03/08/14 05:48 ID:???
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
1000nobodyさん:03/08/14 05:48 ID:GvyHuosa
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWW
w
fga545fg45a1g354
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。