トップページphp
1001コメント294KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん03/07/24 19:48ID:???
いらっしゃーい、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
0002nobodyさん03/07/24 19:49ID:???
[過去ログ] 1 of 2

Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
 DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
 DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
 DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
0003nobodyさん03/07/24 19:49ID:???
[過去ログ] 2 of 2

Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc2.2ch.net/php/kako/1044/10447/1044717887.html (タイトルに19と誤記)
part21 http://pc2.2ch.net/php/kako/1047/10479/1047980851.html
part22 http://pc2.2ch.net/php/kako/1050/10503/1050369328.html
part23 http://pc2.2ch.net/test/read.cgi/php/1053051519/
part24 http://pc2.2ch.net/test/read.cgi/php/1054992610/
part25 http://pc2.2ch.net/test/read.cgi/php/1056730690/

[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0004nobodyさん03/07/24 19:49ID:???
[総合]
 ・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/
0005nobodyさん03/07/24 19:49ID:???
[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/
0006nobodyさん03/07/24 19:50ID:???
[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/
0007あぼーんNGNG
あぼーん
0008nobodyさん03/07/24 20:35ID:???
>>1
乙です。
0009nobodyさん03/07/24 21:45ID:Wz9DxOV5
srand は rand が正確になったもんなんですか?
rand の変わりに srand を使えば良いんですか?
0010nobodyさん03/07/24 21:49ID:Wz9DxOV5
いや違いますね。
0011nobodyさん03/07/24 21:56ID:wyC1cRIx
>>9
Perl4までは、srandで一旦初期化する必要があったのだ
しかし5からはsrandはいらない
0012nobodyさん03/07/24 21:58ID:???
変数の名前を取得するにはどうすればいいですか?
$xxxx="test";
$nameに"test"なく"xxxx"を代入したいんですが・・・。
0013nobodyさん03/07/24 22:00ID:Wz9DxOV5
>>11
有難うございました。
ところで、そのPerl4かPerl5かは、
どこで分かりますか?
0014nobodyさん03/07/24 22:12ID:???
>>13
perl -vって打つと分かるよ
0015nobodyさん03/07/24 22:16ID:???
>>13
perlのバージョンもわからずにコード書いてるのかい?
もう4は少ないだろうが、もしそうだったら大きな影響があるのだから
先にそういうことは知っておくこと
0016nobodyさん03/07/24 22:35ID:???
>>12
どういう場面でそれが必要になるのか分からん……
0017nobodyさん03/07/24 22:38ID:???
>>16
たぶん釣りでしょ
0018nobodyさん03/07/24 23:20ID:2xdh5YDx
プログラム全体でなく、あるディレクトリ
だけロック処理をしたいんですが、
その場合にはどうしたら良いのでしょうか?
0019nobodyさん03/07/24 23:24ID:???
>18
ttp://pc2.2ch.net/test/read.cgi/php/1024795138/
↑で聞いた方がいいかもしれない。
0020あぼーんNGNG
あぼーん
0021nobodyさん03/07/24 23:43ID:???
>>17
釣りではないんですが。
0022nobodyさん03/07/24 23:50ID:???
>>21
それならどういうケースでそんなことしたいか説明してくれ
サンプルのソースを添えてな
0023nobodyさん03/07/24 23:54ID:???
>>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;
0024nobodyさん03/07/24 23:57ID:???
>>12
変数の名前はプログラムを書いた人が知ってるから、調べなくてよい。
0025nobodyさん03/07/24 23:58ID:???
乱数の話しもう終わったかな。
おれはいつも、
rand(time*$$)ってやってるけど。。。
0026あぼーんNGNG
あぼーん
0027nobodyさん03/07/25 00:01ID:???
>>25
それは意味のあるものが返ってくるのか?

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

>>30はsrandの話に関して
0032nobodyさん03/07/25 00:21ID:???
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$lolita = <FILE>;

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

"8<>8"
"8<>4"
"2<>8"
"2<>3"
"1<>9"
と並び替えるようなものです。
0063nobodyさん03/07/25 05:28ID:???
>>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;
00644303/07/25 07:30ID:???
>>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がやってることがなんとなくでも理解できないと、
応用できないんかなって。
0065あぼーんNGNG
あぼーん
0066あぼーんNGNG
あぼーん
0067 ◆hMJAPH9PWA 03/07/25 11:31ID:???
| <FILEHANDLE> while ( $count-- < 0 );

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

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

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


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

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

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

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

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

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

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

  表\示

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

連続カキコ失礼。
0122nobodyさん03/07/26 18:21ID:???
>>101
perldelta

http://www.att.or.jp/perl/change/5004pre.html
http://www.kt.rim.or.jp/~kbk/perl5.005/perldelta.html
0123nobodyさん03/07/26 23:22ID:UhENImdi
確か、perldocをWindows help形式に変換したものを、どこかで配ってたと思うのですが、
どこで配ってたか忘れてしまいました。
ぐぐったものの見つからず。

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

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

>>125
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlstyle.html
0127nobodyさん03/07/27 02:46ID:???
<!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;
}
0128nobodyさん03/07/27 03:12ID:???
>>127
> <!HOGEHOGE>
> これはHTMLだとコメントになりむしされる。
初めて知ったよ。
0129nobodyさん03/07/27 04:00ID:???
<!--HOGEHOGE-->
だった。
0130nobodyさん03/07/27 09:21ID:???
>>125
ない。「それにはいくとおりもやりかたがある」から。
C言語出身のやつはC言語での命名規則を、
Java出身のやつはJavaでの命名規則を、
使えばそれでいい。
0131nobodyさん03/07/27 09:51ID:???
"use 全部小文字"は予約されてるからパッケージ名に全部小文字は使わない。
全部大文字のsubも使わないほうが良かったような。
0132nobodyさん03/07/27 11:40ID:qAaynntQ
フォームから送られてきたデータを切り分ける処理を

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

とした場合、splitは1回だけ実行されるのでしょうか。
ループのたびに実行されてたら馬鹿みたいなので。
0133nobodyさん03/07/27 11:47ID:???
ループのたびにsplitされたら、永久にまわり続けるだろう。
013413203/07/27 11:54ID:???
…そうか。少しは考えろよ俺。
くだらない質問失礼しました。
0135あぼーんNGNG
あぼーん
0136あぼーんNGNG
あぼーん
0137nobodyさん03/07/27 14:00ID:???
>>132
なんで最近こんな奴ばっかなんだよ。
>splitは1回だけ実行されるのでしょうか。
他人に聞くよりPerlに聞いた方が正確だし早い。やればわかるだろ。
0138nobodyさん03/07/27 17:20ID: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回データ開くってのが、ソースが変だし、効率が悪いと思うんですが、効率いい方法ありませんか?
「件数」を先に出力するので、この方法以外考えられません。
条件に当てはまったものを、配列に入れて、後で出力ってのも考えましたが、
配列は効率わるそうで・・・
ご教授お願いします
0139nobodyさん03/07/27 17:22ID:???
無限ループが心配な場合は$f++>=100 last;
とかストッパーかけておくと良い。
0140nobodyさん03/07/27 17:25ID:???
while (??) {
if ( 表示する条件 ) { continue; }
$n++;
if (??) { contine; }
if(??) { contine; }
print $_; or $xx = $_;
}

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


これじゃだめなのん?
オープン2回が気になるなら、seekで戻せば開きなおす必要はなし。
0146nobodyさん03/07/27 18:15ID:???
@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ファイルハンドルは避けたほうがいいよ。
改行もしっかり処理しよー。
0147nobodyさん03/07/27 19:03ID:bAtOJVka
Aというサーバーで動くperlスクリプトが
Bというサーバーでは動きません。
原因として考えられるのって何があるでしょうか?
0148nobodyさん03/07/27 19:04ID:???
>>147
スレ違い
0149nobodyさん03/07/27 19:25ID:???
http://pc2.2ch.net/test/read.cgi/php/1056078605/820
0150nobodyさん03/07/27 19:58ID:LVhmum4F
>>143
効率は悪くないんですかね・

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

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

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

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

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

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

16[4-5]のモジュールは使い方よくわかりませんでした。
0168nobodyさん03/07/28 06:36ID:+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書いたことないからこれでいいのか。

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

while( <FILE> ) { 処理 }

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

配列でやるんだったら配列の入れ方を工夫するといいかも。
@data = <FILE>;
@data = reverse(@data);
とやるよりも
@data = ();
while(<FILE>){unshift(@data);}
とした方がいいかもしれない。
0171nobodyさん03/07/28 11:45ID:???
>170 =~ s/可変行の場合/一行のバイト数が可変の場合/;
0172nobodyさん03/07/28 12:04ID:???
>>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
0173nobodyさん03/07/28 12:09ID:???
>>169
File::ReadBackwards
0174nobodyさん03/07/28 12:16ID:???
>>168
Content Negotiationに任せればいいのでは?
0175nobodyさん03/07/28 13:21ID:ZypqctSD
変数はmyで局所化するのが基本みたいなんでそうしていますが、
例えば同じ変数をどこのサブルーチンで使いたい場合はどうするんでしょうか。
いちいち変数の受け渡しをしないといけないんでしょうか。
0176nobodyさん03/07/28 13:45ID:???
>>175
局所化しなきゃいい。
0177nobodyさん03/07/28 13:47ID:???
>>168
174が言ってるように、ファイル名に.gz追加
logfile1.html.gz
HTTP_ACCEPT_ENCODING見てサーバがファイルを選んでくれる。
0178nobodyさん03/07/28 13:49ID:mZs5gojb
>>175
our。バージョン古くて使えなければuse vars。
0179nobodyさん03/07/28 13:52ID:???
>>175
妙な静的変数

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

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


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

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

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

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

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

大変感謝しております。
0205nobodyさん03/07/29 08:56ID: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の処理が行われないと思うんです。
0206nobodyさん03/07/29 10:14ID:???
cgiがperlで書かれているとすれば。
perldoc を調べなさい。
それから
man crontab。
0207nobodyさん03/07/29 10:15ID:???
ちがう。
crontabはcrontableのことだ。
要するにcronの設定ファイル(といっていいかどうかわからんが)

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

(*´Д`*) マンコロン・・・
0211あぼーんNGNG
あぼーん
0212nobodyさん03/07/29 11:44ID:pmxt/hz7
man cronってなんざんすか?
0213nobodyさん03/07/29 11:47ID: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);
    }
  }
}
0214あぼーんNGNG
あぼーん
0215nobodyさん03/07/29 12:00ID:???
>>213
1 TTYをnon-canonicalモードにする。
プラットフォーム依存。モジュールあるかも。
2 特定のキーでシグナル発生させる。
0216nobodyさん03/07/29 12:03ID:???
>>213
getc じゃ駄目なの?
0217nobodyさん03/07/29 15:52ID:???
今 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%でないので納得できないのです。
何が不足しているのでしょうか?
サッパリ意味が解らないのでご教授お願いします。
0218nobodyさん03/07/29 16:04ID:???
>>217
バーチャルホスト
021921703/07/29 16:39ID:???
>>218
バーチャルホストへは
print SOCKET "Host:$host:$port\r\n";
で対応できているんですよね?

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

>>217 サーバーの DirectoryIndex (クライアントがディレクトリをリクエストしたときに調べるリソースのリスト)確認しろ。
0221nobodyさん03/07/29 17:35ID:???
>>220 (゚Д゚)ハァ?
>(勿論ブラウザなら両方OKです。)
0222nobodyさん03/07/29 19:38ID:71pkcqEp
>>220
(゚Д゚ )ハァ?
それで返ってくるのは403だろ。氏ねや
0223あぼーんNGNG
あぼーん
0224nobodyさん03/07/29 19:55ID:???
connect の後に SELECT してるけど、代わりに autoflush SOCKET (1); は?
0225nobodyさん03/07/29 21:36ID:???
>>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);
}
0226nobodyさん03/07/29 21:40ID:???
>>217
プロトコルをHTTP/1.1にしたら?
0227nobodyさん03/07/29 23:46ID:Y5f15xmJ
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
#$buffer = $ENV{'QUERY_STRING'};

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

ここまでやった後で連想配列の中身を見る方法を教えてください。
どんなkeyが入ってるか知りたいのです。それによって処理を分岐するので。
初歩的な質問ですみません。
0228nobodyさん03/07/29 23:48ID:???
>>227
そのままだけど、keys。
0229nobodyさん03/07/29 23:48ID:???
keys
0230nobodyさん03/07/29 23:48ID:???
>>227
foreach $key ( sort( keys %ENV ) ) {
print "$key = $ENV{$key}\n";
}
0231nobodyさん03/07/29 23:49ID:???
>>230
ENV???
0232nobodyさん03/07/29 23:56ID:???
>>227
print map { "$_ : $in{$_}\n" } keys %in;
0233あぼーんNGNG
あぼーん
0234nobodyさん03/07/30 00:01ID: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>";
}

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

俺としたことが・・

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

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

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

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

では次の質問どーぞ!
0285nobodyさん03/07/30 01:16ID:???
>>282
おまい、Cのやりすぎだ。
028623403/07/30 01:19ID:0qjcwLeT
確かにそうかも、
授業でCあるからな・・
0287nobodyさん03/07/30 01:19ID:???
>>286
配列の大きさとか初めに宣言しなくていいのばペールですよ^^;
0288nobodyさん03/07/30 01:26ID:???
すみません、「<>;」ってどういう意味なんですか?
0289nobodyさん03/07/30 01:32ID:???
<ARGV>
0290nobodyさん03/07/30 01:33ID:???
<^ ^;>
0291nobodyさん03/07/30 01:58ID:???
>>290
おぉ、コンパイルとおるぞ。
029221303/07/30 01:59ID:???
>>215 ぐぐったけど敷居が高そう。今後の課題にします。
>>225 <>で入力完了を待ってシグナルを発生させるみたいです。
0293nobodyさん03/07/30 02:14ID:???
>>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
029429203/07/30 03:18ID:???
>>293 謝謝 ちと勉強してみます
0295nobodyさん03/07/30 03:25ID:JGELpVxk
cgiproxyの動作は
アクセスがあったらその間だけ
proxyサーバとして動作させ、目的のページを吐き出したら
proxyサーバを終了させる。といった感じですか?
それともproxyサーバとcgiproxyは別の原理ですか?
0296nobodyさん03/07/30 03:31ID:chNZYbR6
すいません。
Perlのことで質問したいのですが。
変数名の一部に変数の中の数字を埋め込んで
その変数名を代入したいのですが
どのようにいくのでしょうか?
ちょっと、言葉では分かりにくいので例を挙げると
例えば、$a1 $a2 $a3という変数があって
$bの中に1〜3のいずれかの数字が含まれているとし
この$bの中の数字を変数名として使いたいのです。
これを
$c = '$a' . "$b";
といった感じでやれば$aの方はそのまま文字列として出て
$bの方は変数の中身が展開されて出ると思ってやってみたのですが
エラーが出てしまいます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

これを

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

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

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

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

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

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

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

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

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

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

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

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

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

srand($$|time);

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

print rand(), "\n";

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

$log[$i] の改行コードを省いたものをカットして @dat に格納して処理したいんですが、
$log[$i] そのものの改行コードは残しておきたく、$tmp を使っています。
これを一発で表現する方法を教えてもらえませんか?
0408nobodyさん03/08/02 14:26ID:???
一発じゃないが
@dat = split(/<>/, $log[$i]);
chomp $dat[-1];
0409nobodyさん03/08/02 14:28ID:???
>>408
thx
そちらの方がスマートですね。参考になりました
0410nobodyさん03/08/02 20:02ID:???
**************************************************
***   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です。どうかよろしくお願いします<(_ _)>
0411nobodyさん03/08/02 20:41ID:???
>>410
print "content-type: text/plain\n\n";
041241003/08/02 20:53ID:lcThEZov
>>411
レスありがとうございます。
早速、 print "content-type: text/html\n\n";を print "content-type: text/plain\n\n";
に直して再度うpしてみたのですが、結果は同じでした(´・ω・`)ショボーン

誠にあつかましいのですが、他に良い方法は無いでしょうか?
どうかよろしくお願いします。
0413nobodyさん03/08/02 20:55ID:???
トクトクは勝手にヘッダ情報変えなかったっけ?
0414nobodyさん03/08/02 21:03ID:???
>>410
HTMLで出力。
0415nobodyさん03/08/02 21:04ID: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に入りません。。。
0416nobodyさん03/08/02 21:06ID:???
>415
最小マッチングでぐぐれ。
041741503/08/02 21:21ID:84QkeiYe
>>416
さんくすです。
ぐぐりました。

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

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

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

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

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

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

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

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

んじゃ一応補足……$a->{HOGE} とやればハッシュをコピーしなくてもそのまま参照可能。
配列の場合も同じように。
0435nobodyさん03/08/03 17:47ID:???
>>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) = @_;
}

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


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

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

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

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

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

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

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

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

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

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

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

続く
0470nobodyさん03/08/04 20:47ID:???
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.もっとスマートな方法があるならご教授ください。
0471nobodyさん03/08/04 20:54ID:???
オーバーライドすれば?
0472nobodyさん03/08/04 21:40ID:???
>>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();
047346903/08/04 21:50ID:???
ありがとうございます。
とてもためになります!

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

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

#単純にevalの中でuseしてもされてないのでこうするしかないような
0475nobodyさん03/08/05 00:29ID:???
>>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__
047646903/08/05 01:03ID:???
あ、動きました。汁
まじすいませんです。

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

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

これからじくーり調べます。
ほんとたすかりました。
0477nobodyさん03/08/05 01:12ID:???
my $Enable;
if (require Time::HiRes) {
$Enable = 1;
Time::HiRes->import('usleep');
}
0478nobodyさん03/08/05 05:31ID:???
日本語をブラウザのアドレスバーに入れたとき見たいな文字列に変換したいのですが
具体的には
「日本語 ファイル名テスト用ファイル.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をいじっているのですがそもそも反対のことをしているのはわかっているのですが
うまく、上の形になりません、何か効率のいい方法はありませんか?
047947803/08/05 05:33ID:???
訂正、
>うまく、上の形になりません、
うまく、上の形の文字列が取得できません
0480nobodyさん03/08/05 06:02ID:???
$str = '日本語 ファイル名テスト用ファイル.txt';
$str =~ s/(\W)/'%'.unpack("H2", $1)/ego;
print $str;
0481nobodyさん03/08/05 10:33ID:???
use Time::HiRes;

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

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

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

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

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

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

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

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

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

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

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

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

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



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

>>492
それを回避するには、ファイルを2つ用意し、バックアップも常に生成しておけ…
と言う事でしょうか?
0495nobodyさん03/08/05 20:58ID:???
排他制御を知らない奴はCGI作るなという事でFA。
0496nobodyさん03/08/05 21:07ID:???
Func (・∀・) Anal
0497nobodyさん03/08/05 21:40ID:???
>>496(・∀・)カエレ!!
0498nobodyさん03/08/05 22:11ID:???
> $log_fileのサイズが臨界点に達すると
どのくらいよ?
0499nobodyさん03/08/05 22:25ID: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|$$); を無くすと、
正常になりますが、どうしてでしょうか?
0500nobodyさん03/08/05 22:25ID:???
>>495
排泄処理…?プロセス事故死の話だろ?

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

>>498
perlのメモリ管理はperl自身でやっているから、
つまり鯖によって設定が(ry
0501nobodyさん03/08/05 22:29ID:???
>>499
なんで2回も初期化してるのかは知らんけど。
randの出しかたはアルゴリズムがマシンによって違うぞ。
俺の勘では、それwin系のシステムで使ってないか?
0502あぼーんNGNG
あぼーん
0503nobodyさん03/08/05 23:06ID:???
>>500
> 排泄処理…?
おまるを用意しる!(w
0504nobodyさん03/08/05 23:34ID:???
>>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系だと数列がほとんど変化しない予感。
0505あぼーんNGNG
あぼーん
0506nobodyさん03/08/06 01:09ID:???
>>505( -Д-)…
050750403/08/06 01:10ID:???
説明が無いのもなんですので。。
処理系によるかもしれませんが、大抵、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になります。

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

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

このevalは何をしているのでしょうか? あっても、なくても同じでしょうか?
0509 ◆hMJAPH9PWA 03/08/06 09:29ID:???
>>508
perl4ではシンボリックリファレンスは使えなかったから、eval()が必要だった。
今ではわざわざeval()する必要はないね。
ついでに型グロブで別名をつける必要も無い。
my $stab_ref = \*{$package."::"};
これでシンボルテーブルへの参照を直接使えばいい。
0510nobodyさん03/08/06 10:57ID: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"; }
}
0511 ◆hMJAPH9PWA 03/08/06 11:44ID:???
>>510
あ、ホントだ。
多分、perl5からだと思う。
でも折角のstrict 'refs'なのに…変な仕様だね。
0512nobodyさん03/08/06 11:45ID:JjxVikEH
HP管理システムのCGIを作ろうとしてるんですが、
フォームから取り入れた情報にファイルを書き換えるコードを書いたんです。
そしたらその書き換えるファイルを開こうとしてもそのOPEN行でエラーが起こってしまうんです
どうしたらいいのでしょうか

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

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

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

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

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

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

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

HPの諸設定の書き換えがしたくてCGIをコーディングしたんですが
フォームで設定ファイルを書き換える段階まで来て、
このOPEN行で
Unterminated <> operator at administrator.cgi line 194.
ってでるんです。194行目は open(FILE,"+<$fileini"); です。
0520あぼーんNGNG
あぼーん
052133603/08/06 14:51ID:???
>>519
+<を削除したらどう
052251903/08/06 15:03ID:JjxVikEH
>>521
それでいけるんですか!?
052351903/08/06 15:06ID: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.
0524nobodyさん03/08/06 15:08ID:???
>>508-511
local(*stab) = *{"${package}::"}; # シンボリックリファレンス
local(*stab) = "*${package}::"; # シンボリックリファレンスではない

$pkg = 'ABC';
print "*${pkg}::"; # *ABC::と表示
print eval("*${pkg}::"); # *main::ABC::と表示、何でこうなるかは不明
052533603/08/06 15:11ID:???
その行そのものは間違ってないがエラー表示で<>がおかしいといっているので
とりあえず削除してみてどうなるのか確認したかった。
どっか前の行で"を付け忘れたりとかそんなミスじゃないの。
052633603/08/06 15:19ID:???
>>519
$file ="test.txt;
open(IN, "+<$file");
これで同じエラーが出ます。
0527nobodyさん03/08/06 15:25ID:???
>>526
カッコや""なんかの対応が合ってないだろ。
エラーメッセージ行は考えずにそのルーチン内を全部見てみれ。
052851903/08/06 16:00ID: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でした。
052951903/08/06 16:01ID:JjxVikEH
すいません、かなり、見づらくなってしまいました(汗)
0530nobodyさん03/08/06 16:04ID:???
$query="$ENV{'QUERY_STRING'};
0531nobodyさん03/08/06 16:06ID:???
何故か分からないが、>>506が気に入った。
0532あぼーんNGNG
あぼーん
053351903/08/06 16:20ID:JjxVikEH
ほんとだ!
今の今までまったく気がつきませんでした。

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

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

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

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

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


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

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

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

open

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

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

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

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

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

$b

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

$magic{$zokusei}{LV}

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


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

とかでいいんでない?

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

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

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

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

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

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

print "$magic{'メラ'}[0]";
print "$magic{'バキ'}[1]";
0582nobodyさん03/08/07 13:11ID:???
http://pc2.2ch.net/php/kako/1056/10567/1056730690.htmlの461じゃないのか?
0583nobodyさん03/08/07 13:23ID:???
ハッシュがとうとかより、もっと多次元な気がするからリファレンスだと思うんだけど。
>>581の例はハッシュの中に無名配列のリファレンスを入れた例かな。
実際はもっと複雑になると思われ。
0584nobodyさん03/08/07 13:28ID:???
ファイル abc.html に含まれる あいうえお という文字列を かきくけこ に変換して上書き保存したい場合はどう記述すればいいんでしょうか?
ご回答よろしくお願いします。
0585nobodyさん03/08/07 13:44ID: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";
0586nobodyさん03/08/07 13:57ID:2CZr0oID
FreeBSDのみでしか動作確認ができていないperl-cgiをANHTTPD+ActivePerlで動かしたいけど、
open($fh, "-|");
が開けなくて困っています。
Windows版のperlは-|は対応していないのですか?
素敵な対応方法を教えてください。
0587nobodyさん03/08/07 14:11ID:???
>>586
perldoc -f open は読んだかい?
0588nobodyさん03/08/07 14:35ID:???
マックやウィンドウズでは使えないっすよ
0589nobodyさん03/08/07 15:12ID:2CZr0oID
>>587 >>588
サンクスコ
0590nobodyさん03/08/07 15:13ID:???
さげるの忘れてますた
0591あぼーんNGNG
あぼーん
0592nobodyさん03/08/07 16:03ID:MNjVgF7U
ゲームで、対戦で、攻撃はパンチとキック、どちらかは2分の1
パンチの場合は、5回に1回はダメージ低い。
さらに5分の2の確率でミスをする。

というのを、1ターンの各攻撃を下のスクリプトに書いたが動かない
誰かこの初心者を助けてください
0593nobodyさん03/08/07 16:03ID: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;
}
}
0594nobodyさん03/08/07 16:32ID:???
( ゚д゚)ポカーン あきれて何も言えん・・・
0595nobodyさん03/08/07 16:40ID:???
>>592
ちみ、潔いですね!男らしいですね!
ということで、『今回だけ特別に』解答してさしあげる。
構造化プログラミングが苦手そうなちみは、gotoを使いなさい。
0596nobodyさん03/08/07 16:43ID:???
>>592-593
ここはお前の相談コーナーじゃないし、質問以前の問題だ
文法を一から勉強しなおしてこい
0597nobodyさん03/08/07 16:56ID:???
ゲームで値を決める場合
$temp = A1 ? B :
A2 ? C ;
A3 ? D :
'';
とか、オレならやるかな…
0598nobodyさん03/08/07 17:20ID:???
$panti = black; (;´Д`)ハァハァ…
0599nobodyさん03/08/07 17:41ID:???
$panti = t_back; (;´Д`)ハァハァ…
0600 03/08/07 17:43ID:???
$panti = heibon; (;´Д`)ハァハァ…
0601nobodyさん03/08/07 18:06ID:fDShQWtW
質問させてください。

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

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

もっといい方法があるなら教えてくださいよ
0612あぼーんNGNG
あぼーん
0613nobodyさん03/08/07 20:30ID: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;
}
}
0614nobodyさん03/08/07 21:24ID:???
もう来るなと言ったろ
0615nobodyさん03/08/07 22:51ID:???
それ、エラーチェックしてんの???????????????


とりあえず、まず文法守れや。
0616nobodyさん03/08/08 00:55ID:???
foreachは
foreach $a ($b) {}
とするか
foreach ($b) {}
とするのはどっちのほうがいいのですか?
0617nobodyさん03/08/08 01:05ID:???
>>616
ケースバイケース。
後者は $_ に入るだけだから、うまく使い分ける。
0618nobodyさん03/08/08 01:06ID: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/
0619nobodyさん03/08/08 01:16ID:???
>>618
これでやってみそ。

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

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

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

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

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

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

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

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

要するに、行が色々なテスト名、列が生徒名となっているような典型的なテーブルです。
0632nobodyさん03/08/08 02:50ID:???
>>631
ハッシュでいいんじゃないの?
0633nobodyさん03/08/08 02:56ID:???
生徒名・テスト名から点数にアクセスできるようにしたいのですが、
ハッシュだとキーはどうなりますか?
0634nobodyさん 03/08/08 03:01ID:???
リファレンスでも勉強してくれば〜??
0635nobodyさん03/08/08 03:53ID:???
>>631
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perllol.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
0636あぼーんNGNG
あぼーん
0637あぼーんNGNG
あぼーん
0638あぼーんNGNG
あぼーん
0639あぼーんNGNG
あぼーん
0640あぼーんNGNG
あぼーん
0641nobodyさん03/08/08 04:32ID:RBuH2Puu
攻撃
イフキック

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

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

0642nobodyさん03/08/08 04:34ID: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;
}
}
0643nobodyさん03/08/08 04:44ID:???
>>642
どこでPerlを学んだ?
0644nobodyさん03/08/08 04:44ID:RBuH2Puu
フセイン
イフ捕まる(アメリカに核を落とす

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

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

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

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

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




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

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

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

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








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

の=と<が逆だな
56Pでわかったよ
これで動きそうだ
0658nobodyさん03/08/08 05:30ID:fJ1eIuTw
>>657
いや、報告しなくていいから。
ここはあんたの日記帳じゃないんだし。
0659nobodyさん03/08/08 05:41ID:???
ゲームで、対戦で、攻撃はパンチとキック、どちらかは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;
0660nobodyさん03/08/08 05:44ID:???
>>652
間違って存在しないサブルーチンに飛んだら、エラーを発生させず、特定のサブルーチンに移動してもらう昨日。
引数もちゃんと受け継がれる。
変数名で飛んでくルーチンを指定してる時とか便利かも。

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

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

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 って書いてる。
でも文字化け全然しない…
不思議……(@▽@;)
0668nobodyさん03/08/08 13:11ID:???
>>659
お前はバカか?やるなら荒らしと廃スレでやれや
0669nobodyさん03/08/08 14:21ID:awu4UezK
配列のなかの要素(数字)をすべて足した数値を出すには
foreachを使うのが一番いいのでしょうか?
0670nobodyさん03/08/08 14:45ID:???
>>669
map でも良さそうですね。
0671nobodyさん03/08/08 14:49ID:???
>>667
IEで見てんじゃねーの
0672nobodyさん03/08/08 15:25ID:???
>>669-670
<q cite="http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlstyle.html">
戻り値をただ単に捨ててしまうような void 文脈で、grep()やmap()、
`backticks` (訳注: `ls`のようにバッククォートで括った実行文のこと)
を使うことは避けましょう。そういった関数はすべて戻り値を持って
いるのですから、それを使うべきです。戻り値に用がないのであれば、
代わりにforeach()を使ったループか system()関数を使いましょう。
</q>
0673nobodyさん03/08/08 16:17ID:???
>>669
$ perl -e '@array=(1,2,3);print eval join("+",@array);'
0674nobodyさん03/08/08 16:22ID:???
:で区切られた文字列があります。
もし、 : の後にhogehogeがあるなら、:から:までを消すのはできたんですが
   ※こんな感じで s/:hogehoge.*?://g
その逆の、 : の後にhogehogeが ない なら、:から:までを消す 方法を教えてください。
0675nobodyさん03/08/08 16:30ID:???
age
0676あぼーんNGNG
あぼーん
0677あぼーんNGNG
あぼーん
0678あぼーんNGNG
あぼーん
0679あぼーんNGNG
あぼーん
0680あぼーんNGNG
あぼーん
0681nobodyさん03/08/08 16:47ID: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;
0682nobodyさん03/08/08 16:52ID:RBuH2Puu
これで動かないんですけど、
あと何が必要ですか?
キャラはPlayer1とPlayer2
Player1はHP400、キック力は60、パンチ力は20、防御力は10
Player2はHP300、キック力は100、パンチ力は40、防御力は0

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



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

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

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

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

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

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

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

括弧ひとつ余計につけないとダメらしい
0690nobodyさん03/08/08 17:33ID: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;
}
0691nobodyさん03/08/08 17:33ID: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>";
0692nobodyさん03/08/08 17:34ID:RBuH2Puu
やっぱ動かない
考えるか
0693nobodyさん03/08/08 17:37ID:???
>>RBuH2Puu

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

0698nobodyさん03/08/08 20:00ID:???
つーかattackとかkickとかしろよ、名前
KIKって(;´Д`)
0699nobodyさん03/08/08 20:02ID:???
>>659
が余計なコト書くから。
RBuH2Puuがわけの分からん行動はじめた。
0700nobodyさん03/08/08 20:13ID:???
ぷうまだ居たんだ。
0701nobodyさん03/08/08 20:25ID:???
もうすでに意地になってるだけだろ。一番ダサいパターンだ。
0702nobodyさん03/08/08 20:28ID:???
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
0703nobodyさん03/08/08 20:35ID:???
ある変数を複数の条件で比較したいのですがどうすれば良いのでしょう。
例えば$hogeは$fooか$barか$baz以外の値であればエラーとしたくて
if ($hoge ne ($foo or $bar or $baz)){&error(不正な値が混じってます);}
のように書いたりしたのですがダメでした。
0704nobodyさん03/08/08 20:39ID:???
if (($hoge ne $foo) or ($hoge ne $bar) or ($hoge ne $baz)){&error(不正な値が混じってます);}
0705nobodyさん03/08/09 01:40ID:???
>>704
書いた本人もわかってると思うけど、orはandの間違いだよね。
0706nobodyさん03/08/09 02:34ID: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;
0707nobodyさん03/08/09 02:34ID: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;
0708nobodyさん03/08/09 02:34ID: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>";
0709あぼーんNGNG
あぼーん
0710あぼーんNGNG
あぼーん
0711あぼーんNGNG
あぼーん
0712nobodyさん03/08/09 02:40ID:???
いつまで荒らせば気が済むんだ
0713あぼーんNGNG
あぼーん
0714あぼーんNGNG
あぼーん
0715nobodyさん03/08/09 02:48ID:???
($damage < 0) and ($damage = 0);
$defense->{'HP'} -= $damage;
0716nobodyさん03/08/09 03:54ID:???
>>715
相手にするなよ
お前みたいなのがいるからつけ上げるんだ
0717あぼーんNGNG
あぼーん
0718nobodyさん03/08/09 04:09ID:???
>>716
黙れ無能。
0719nobodyさん03/08/09 04:21ID:???
いるんだよな。
教えたがりというか、得意になりたがるというか。
感謝のレスをもらって満足したいんだろうなぁ。
0720nobodyさん03/08/09 04:37ID:???
糞な質問は仕方ないとしてもデカイAA貼るのはム板では論外。
荒らしとしても最低の部類に入る。

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

相手にすんなよ、とか言ってる馬鹿がいるから荒れるんだよ
もとは、てめーみたいな無脳がいるから、住みつくんだっつーの!!
無脳を相手にするのは一番、気持ちいいからな!!馬鹿だから!!
0724nobodyさん03/08/09 05:40ID: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;
0725nobodyさん03/08/09 05:40ID: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'};
}
0726nobodyさん03/08/09 05:40ID: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;
0727nobodyさん03/08/09 05:41ID: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>";
0728nobodyさん03/08/09 05:42ID:9s2Ca0tO
やっぱり動かないっすね

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

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

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

>>735
> >($damage < 0) and ($damage = 0);
and しなくてもいいよな(w
0737同一人物による大量の書き込み03/08/09 10:50ID:???
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%を消費。
0738nobodyさん03/08/09 11:24ID:???
ID:9s2Ca0tO ウザイな…。と、思ったら削除依頼出てるね。サンクス>出した人
0739nobodyさん03/08/09 12:33ID:???
>>703
&error('不正な値が混じってます') unless grep{$hoge eq $_}($foo,$bar,$baz);
とか
074070303/08/09 13:02ID:???
andで出来ました。
$hogeと$fooが一致しないか(or)$hogeと$bar一致しないか(or)とかいう風に
考えてしまいました…。

>739
どもです。
そちらの方がすっきりしてますね。
0741nobodyさん03/08/09 13:03ID:aJfrmQrg
なんか最後のほうで荒らし多いな〜
0742あぼーんNGNG
あぼーん
0743nobodyさん03/08/09 14:05ID:9s2Ca0tO
なんでアンドがいらないんですか?
というより、動かねーよ!
0744あぼーんNGNG
あぼーん
0745あぼーんNGNG
あぼーん
0746あぼーんNGNG
あぼーん
0747あぼーんNGNG
あぼーん
0748あぼーんNGNG
あぼーん
0749あぼーんNGNG
あぼーん
0750あぼーんNGNG
あぼーん
0751nobodyさん03/08/09 14:59ID:???
友達いないのか、可哀想に。
0752nobodyさん03/08/09 15:01ID:???
>>737にさらに744-750か。
0753nobodyさん03/08/09 15:02ID:???
>>739
grepってそんな使い方も出来るのか…φ(._.)
0754nobodyさん03/08/09 15:32ID:???
>>740
@array = ($foo,$bar,$baz);
&error('不正な値が混じってます') unless grep{$hoge eq $_}@array;

すっきりしてる、っていうか上みたいな使い方ができるので、
比較対照が可変の場合に楽。
0755nobodyさん03/08/09 18:46ID: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;
0756nobodyさん03/08/09 18:47ID: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'};
}
0757nobodyさん03/08/09 18:47ID: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;
0758nobodyさん03/08/09 18:47ID: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>";
0759あぼーんNGNG
あぼーん
0760あぼーんNGNG
あぼーん
0761あぼーんNGNG
あぼーん
0762nobodyさん03/08/09 18:52ID:???
だれかこの荒らし君を
killかrmかなんだかしてやってほしい
0763nobodyさん03/08/09 18:54ID:aJfrmQrg
削除要請しちゃっていい?
0764nobodyさん03/08/09 18:54ID:???
>>762
むしろforkを
0765nobodyさん 03/08/09 18:57ID:???
>>762 削除依頼は逝ってるから判断してくれるっしょ

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

こっちにもあげときました。
0769momo03/08/09 21:29ID: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>|;
0770nobodyさん03/08/09 21:41ID:???
チルダってわかってるなら変換すりゃいいじゃん。%7Eだっけ。
あと、METAタグを使う理由がわからん…
0771nobodyさん03/08/09 21:43ID:???
ヒアドキュメント知らないのかな?
0772nobodyさん03/08/09 21:49ID:???
>>769
http://pc2.2ch.net/test/read.cgi/php/1059878966/21
0773nobodyさん03/08/09 21:51ID:???
>>772
っち・・・マルチだったのか・・・
0774nobodyさん03/08/09 22:47ID:???
なんかろくなのが来ないね。
0775sage03/08/09 22:47ID:jpYU10pt
sage
0776nobodyさん03/08/09 22:49ID:GqH0THDn
至急教えて頂きたいんですが、
}elsif(a){
}elsif(b){
}elsif(b){
と表示するのと、
}elsif((a)||
(b)||
(c))){
と表示するのとでは効果は同じですよね?
上の方が分かりやすいから私は上を使っているんですが、
何かデメリットはあるんでしょうか?
0777nobodyさん03/08/09 23:03ID:???
>>776
同じじゃない
0778nobodyさん03/08/09 23:13ID:???
>776
俺なら下を使うね。
0779momo03/08/09 23:18ID:???
上の補足です
http://hogehoge.com/jump.cgi?http://yahoo.com/~sub/
のリンクだと
http://yahoo.com/\~sub/となってしまい、うまくhttp://yahoo.com/~sub/に
飛ぶことが出来ないんです
0780nobodyさん03/08/09 23:25ID:???
>>779 マルチがばれたらレスは付かない。
0781nobodyさん03/08/09 23:41ID:???
>>779
失礼ですが貴方は hogehoge.comとyahoo.comのオーナー様でしょうか?
公に使用者が開示されているドメインネームを不当にドキュメント等に用いるマナー違反者が
増えていますので。 念のため確認です。
0782nobodyさん03/08/09 23:51ID:???
まぁ向こうで誘導された感じではあるが…

#! /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;

これでいいかね
0783あぼーんNGNG
あぼーん
0784nobodyさん03/08/10 00:09ID:???
>>781
こいつ性格悪そうだな(w
0785あぼーんNGNG
あぼーん
0786あぼーんNGNG
あぼーん
0787あぼーんNGNG
あぼーん
0788あぼーんNGNG
あぼーん
0789nobodyさん03/08/10 02:36ID: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;
0790nobodyさん03/08/10 02:36ID: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'};
}
0791nobodyさん03/08/10 02:37ID: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;
0792nobodyさん03/08/10 02:39ID: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>";
0793あぼーんNGNG
あぼーん
0794nobodyさん03/08/10 03:13ID:???
>>786-793
これも削除依頼かな…。死んでくれ
0795nobodyさん03/08/10 03:16ID:???
これって、リア房か?
削除人は何やってる?
0796nobodyさん03/08/10 03:34ID:???
かかわらんほうがいい。こう言うのは無視がいちばん堪えるんだから。
削除依頼だけしっかりやっときましょう。
0797nobodyさん03/08/10 03:43ID:???
そうだね
所定の回数に達したらアク禁になるわけだし

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

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

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

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

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

よろしくお願いします。
0801あぼーんNGNG
あぼーん
0802nobodyさん03/08/10 10:31ID:9Q9rpSmQ
モジュールABCの関数を使いたいとき、
use ABC; と @ISA = ('ABC'); とは何が違うのですか?
0803nobodyさん03/08/10 10:38ID:???
どうでもいいが、フォームから削除依頼しろよ。
0804nobodyさん03/08/10 10:39ID:???
>>800
自前で計算して用意するか、
time()みたいに、1970年1月1日からの秒数に変換して、そこからlocaltimeで変換するか
0805nobodyさん03/08/10 10:40ID:???
>>800
http://books-support.softbank.co.jp/pn/fumo01.html

>>802
http://www.rfs.jp/sitebuilder/perl/04/03.html
0806nobodyさん03/08/10 10:50ID:???
>>802
後者の方法はサブクラス化という方法で ABC 内の関数を
オーバーライドしたい時などその方法を使用する
…ぐらいしか思いつかないな
0807nobodyさん03/08/10 13:03ID:???
>>799
?あれにかかわったレスも削除して「なかったことに」してもらうのが一番。

ついでに削除屋さんは広告も一括して削除してくれたらありがたいなぁ。
0808nobodyさん03/08/10 13:25ID:???
>>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連続投稿(ほぼ同一人物)
荒らしをしている人物は夏の風物詩で、暫く粘着しそうなので、こまめに削除依頼出すのでよろしく。
0809nobodyさん03/08/10 14:29ID:???
>>800
my ($year, $mon, $mday, $hours, $min) = unpack('A2A2A2A2A2', $packed_data);
で返った値をtimegm();につっこむ。$mon-1と$year+100を忘れずに。

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

package AB;
sub aloc {
my ($pkg, $a, $b) = @_;
my $obj = bless {"a" => $a, "b" => $b}, $pkg;
return $obj;
}
1;
0811nobodyさん03/08/10 16:30ID:???
(続き)
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で
継承するのが良いのか、が分からなくなりました。
0812あぼーんNGNG
あぼーん
0813nobodyさん03/08/10 16:31ID: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'};
}
0814nobodyさん03/08/10 16:32ID: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;
0815nobodyさん03/08/10 16:32ID: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>";
0816あぼーんNGNG
あぼーん
0817nobodyさん03/08/10 16:37ID:???
ID:c9slSjrq 取り敢えず、NGワードっと、
↓ハイ、次の方どうぞ
0818あぼーんNGNG
あぼーん
0819あぼーんNGNG
あぼーん
0820あぼーんNGNG
あぼーん
0821あぼーんNGNG
あぼーん
0822あぼーんNGNG
あぼーん
0823nobodyさん03/08/10 17:21ID:???
>>c9slSjrq
にゅ速で美味しんぼ連載してるひと?
0824nobodyさん03/08/10 17:28ID:???
だいたいPerlで変なゲーム作ろうとしてる意図が不明。
0825nobodyさん03/08/10 17:47ID:???
キチガイのやることを理解などできるわけがない。
0826nobodyさん03/08/10 19:14ID:???
ID:c9slSjrqの情報調べてみたけど、やっぱり小学生だったよ。
0827nobodyさん03/08/10 20:43ID:???
>>810-811
継承が必要なら@ISAを使う、隠蔽したいなら使わない。かな。
(深く考えた事ないですね。オブジェクト指向なら継承しとけみたいな。)

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

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

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

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

# ご指摘のとおり、alocはallocのつもりでした。
0829nobodyさん03/08/10 22:08ID:???
>>828
Hoge.pm
--------------------------------
package Hoge;
import{ エクスポートな処理 }
--------------------------------
というものがあったとしたら、
use Hoge;
は、
BEGIN{
require Hoge;
Hoge->import;#または、import Hoge;と書いてもあり。
}
を実行しているだけ。
importメソッドがなけりゃ、
BEGIN{ require Hoge; }
と同じ。
だから、クラスによって違うのさ。
0830nobodyさん03/08/10 22:21ID:???
とあるスクリプトで時間を計算して表示させているのですが、
例えば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];

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

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

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

>>840
最初に覚えた方法が一番分かり易いと思い込んでいる人は多い。
もちろんその方法しか知らない人も多い。
084384003/08/10 23:41ID:???
>>841-842 レスさんくす。
なるほどねー。
自分最初にPerlおぼえて、
そのあとちょっとPHPかじって、
Javaおぼえようかなーて思ってる程度だからなー。
0844nobodyさん03/08/10 23:42ID:???
>>841
C#にも@""構文があるのに。Perlユーザだけとは心外だな。
0845nobodyさん03/08/11 00:55ID:???
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";
0846あぼーんNGNG
あぼーん
0847あぼーんNGNG
あぼーん
0848nobodyさん03/08/11 00:59ID:???
#!/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;
0849nobodyさん03/08/11 00:59ID:???
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'};
}
0850nobodyさん03/08/11 01:00ID:???
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;
0851nobodyさん03/08/11 01:02ID:???
# 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>";
0852nobodyさん03/08/11 01:11ID:???
>>840
単に知らないからだと思うが。
0853nobodyさん03/08/11 10:23ID:???
 
0854nobodyさん03/08/11 12:01ID:???
>>839
長くなりすぎると動きません。500行以内じゃないと動きにくいです。
ちゃんと勉強しろ!オタクやろう!!
0855nobodyさん03/08/11 12:03ID:vd5Ibrol
             ________________
     ∧_∧∩ /
    ( ´∀`)/<真珠のPerlと何が違うんですか!?
 _ / /   /   \___________________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
0856nobodyさん03/08/11 12:04ID:???
      , ' s    \::::::::::::i
     /"""''/ーナ-t----|
.    /   ,.‐   ⌒    /ヘ
    {入|(・)  (・)    |||||||   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
      |⊂⌒◯-------9)  <    まだ、動かないぜ!ベイビー!!
      | |||||||||_    |    \_______
       \ ヘ_/ \ / ̄`\、
.        \、__ i⌒i/, -'"~  `ヽ、
       ,.‐'´   i--i        \
       `〈ヽ, -'"~T  ヽ、 , -'" ~ `ヽ、
       / ( ̄ T   iヽ、__     \.
     /    ( ̄T   |   `ヽ、    }
    く       ̄ `ヽ、/__        /
0857nobodyさん03/08/11 12:07ID:???
   ___________________
   || ($damage < 0) and ($damage = 0);
   || $defense->{'HP1'} -= $damage;はダメージ
   ||           ∧_∧   。
   ||         (  ^^ )/
    ̄ ̄ ̄ ̄ ̄ ̄ (    つ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                /  ̄ ̄ ̄ ./| lヽ──────────────
                | ̄ ̄ ̄ ̄| | | ダメージを受けると、糞をもらします
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|____|/ |
                        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ∧ ∧    ∧,,∧   ∧ ∧
    (・,, ∧▲  ミ  ∧ ∧ (  ∧ ∧
  〜(_(  ∧ ∧_( ∧ ∧_ミ・д・∧ ∧
    @(_(,,・∀・)@ (   *)〜ミ_ (   ,,)
      @(___ノ 〜(___ノ    〜(___ノ
0858nobodyさん03/08/11 13:19ID:???
2chって、鯖/カテゴリ/.../dat/
でアクセスして表示しますよね?
これってこの全てのディレクトリの下にindex.htmlか.cgiかなにかを置いてあって、
それを表示してるってことですよね?
でも
鯖/カテゴリ/.../dat/
これでアクセスしたときと、
鯖/カテゴリ/.../dat/index.htmlでアクセスしたときと、
表示が微妙に違うんです。

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

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

>>854
はマシンのスペックがよっぽどしょぼいか、
しょっぱいスクリプトの書き方してるんじゃないかな。
0869nobodyさん03/08/11 20:04ID:???
10000行で20KB
ってことは、10000行の改行だけのスクリプトってことだな
0870nobodyさん03/08/11 20:04ID:???
あ、ちがった。
KBとBの単位をまちごた。
0871nobodyさん03/08/11 21:26ID:???
最近UTF-8でスクリプト書いても動く事に気付きました。
で素朴な疑問ですがやはりEUCでないとどこかで不都合起きたりしますか?
今のところ何も起きてないけど気になって。
0872nobodyさん03/08/11 21:34ID:???
UTF-8だと問題ないでしょ。
さらに
perl5.8を使って、
use Encode;
でさらに幸せになれます。
0873nobodyさん03/08/12 04:00ID:???
たった50行ですけど、重くて全然動かないですよ。
パソコンの環境によっては500行以下にしなさいってことだ。
0874あぼーんNGNG
あぼーん
0875あぼーんNGNG
あぼーん
0876あぼーんNGNG
あぼーん
0877あぼーんNGNG
あぼーん
0878あぼーんNGNG
あぼーん
0879あぼーんNGNG
あぼーん
0880あぼーんNGNG
あぼーん
0881あぼーんNGNG
あぼーん
0882あぼーんNGNG
あぼーん
0883あぼーんNGNG
あぼーん
0884nobodyさん03/08/12 04:50ID:???
50行で動かないってどういうスクリプトだそりゃ。
または博物館行きのスペックのマシンでも使ってんのか?
0885nobodyさん03/08/12 04:53ID:???
ほっとけ
0886nobodyさん03/08/12 04:55ID:???
>>884
とてつもなく巨大な配列とか使ってたりして(w
0887nobodyさん 03/08/12 05:17ID:???
無限ループすれば一行でもおもくできるが?

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

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

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

# main.cgi

require "inc.pl";
・・・・

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

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

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

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

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

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

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

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

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

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

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

よろしくお願いします。

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

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

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

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

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

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

>>937>>932-934辺りへのレスです。
0939nobodyさん03/08/12 22:35ID:???
クエリーストリングを、%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)">
となってしまうのですが、どこがいけないのでしょうか・・・?
0940nobodyさん03/08/12 22:43ID:???
>>938
乙。
あぼーん<>あぼーん<>あぼーん<>あぼーん<>あぼーん<>
を追加加工は出来なかったのね(w

>>939
リファレンスで渡してるやん。。。
0941nobodyさん03/08/12 23:00ID:???
#!/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;
0942nobodyさん03/08/12 23:00ID:???
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'};
}
0943nobodyさん03/08/12 23:07ID:???
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;
0944nobodyさん03/08/12 23:08ID:???
($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>";
0945nobodyさん03/08/12 23:09ID:???
>>935

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

while (@test){
 print\n;
}

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

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

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

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

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

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

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

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

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

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

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

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

できません。共有はできません。どちらかあきらめてください。
あなたも欲ばりですね。
そんな初歩的な質問、こんなところでしないでください。どこか行ってください。
0966nobodyさん03/08/13 16:46ID:???
#!/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;
0967nobodyさん03/08/13 16:46ID:???
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'};
}
0968nobodyさん03/08/13 16:46ID:???
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;
0969nobodyさん03/08/13 16:46ID:???
>>963
ファイル使っちゃあかんの?dbmとかbdbとか
あと時計監視はちょっと、、、cronとか使えないの?
0970nobodyさん03/08/13 16:47ID:???
# 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>";
0971nobodyさん03/08/13 16:48ID:???
∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
<                                     >
< 動カンカッタ>>720-736ーーーーーーーーー!!    >
<                                     >
  ∨∨∨∨∨∨∨∨∨∨∨\  /∨∨∨∨∨∨∨∨∨∨∨
          /:|.       | |     /:|
        /  .:::|       ∨    /  :::|
        |  ...:::::|           /   ::::|
       i       ̄ ̄⌒゙゙^――/    ::::::::|
      /_,,___       . _,,,,__,_     :::::::::::\
      /   ゙^\ヽ..  , /゙   ¨\,.-z   ::::::::::\
      「 ●    | 》  l|  ●    ゙》 ミ..   .::::::\
     /i,.      .,ノ .l|  《       ..|´_ilト    ::::::::::\
    / \___,,,,,_/ .'″  ^=u,,,,_ v/..       :::::::::::::l!
    |            ̄ ,,、         i し./::::::::.}
   |  /  ,,____ _,/ ̄ \ \      ノ (  ::::::::::|
    |  |.. | /└└└└\../\  \    '~ヽ ::::::::::::::}
    |   .∨.|llllllllllllllllllllllllllllllllllllllll|       ::::::::::{
    |    |.|llllllllllll;/⌒/⌒  〕          :::::::::::}
     |   |.|lllllllll;   ./ .   . |          ::::::::::[
     .|   |.|llllll|′  /    . |    .|      :::::::::::|
     .|   |.|llll|    |     .∧〔   /    :::::::::::::/
    / }.∧lll    |    ../ /  /   :::::::::::::::::\
   /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
      ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::
0972nobodyさん03/08/13 16:48ID:p0VVcbYX
スレンダーなロリ体形ながらもオマンコ方はしっかり発達しちゃってます。
大きなオチンチンを喉の奥までくわえ込んでのフェラは大人顔負けですぞ。
挿入シーンは少ないながらも小さなオマンコにしっかり挿入されているシーンが勃起モノ!
若い娘はいいですな。

無料ムービーはこちら!
http://www.cappuchinko.com/
097396003/08/13 16:50ID:???
962さん、どうもありがとうございます!
解決しました。
0974nobodyさん03/08/13 16:55ID:???
                                                                       
0975nobodyさん03/08/13 17:32ID:???
荒らしではないんだが、レスあぼ〜ん依頼してる方へ
なるべく一度に依頼してくれませぬか?
かちゅだとあぼーんするたびにスレ再取得しなくちゃならないから大変なのよ
0976nobodyさん03/08/13 17:57ID:???
>>975
ものすごく自分勝手なやつだな。
0977nobodyさん03/08/13 18:47ID:???
>>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
(使ったことないので、どんなものか知らなかったり。使った感想きぼん。)

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






















0979nobodyさん03/08/13 19:56ID:???
>>976
( ゚Д゚)ハァ?
つーか、削除依頼なんかすんな。透明あぼーんでもしたらいいだろ。
0980nobodyさん03/08/13 19:57ID:???
>>979
お前が使用ブラウザを変えればいいだけだ。
0981nobodyさん03/08/13 19:59ID:???
ウンコスレ
0982nobodyさん03/08/13 20:12ID:???
バカはあぼーんしないといけないので。
つーか、かちゅなら改造して
再取得しても「あぼ〜ん」を保持するようにしたらいいじゃん?
0983nobodyさん03/08/14 02:32ID:???
#!/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;
0984nobodyさん03/08/14 02:32ID:???
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'};
}
0985nobodyさん03/08/14 02:32ID:???
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;
0986nobodyさん03/08/14 02:33ID:???
# 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>";
0987nobodyさん03/08/14 02:35ID:???
       | 通報しますた!
       \
         ̄∨ ̄ ̄ ̄ ̄ ̄
              
         ∧_∧
          ( ´Д`)
        /,  /
        (ぃ9  |
       /   /、
       /   ∧_二つ
      /   /
      /   \
     / /~\  \
     / /   >  ) 
   / ノ   / /
  / /  . / ./.
  / ./    ( ヽ、
 ( _)     \__つ
0988nobodyさん03/08/14 02:37ID:???
。(´・ω・`) 。(´・ω・`) 。(´・ω・`) 。(´・ω・`) 。(´・ω・`)
   (´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)
        ○(´・ω・`)○(´・ω・`)○(´・ω・`)○(´・ω・`)○(´・ω・`)○
             。(´・ω・`) 。(´・ω・`) 。(´・ω・`) 。(´・ω・`) 。
              (´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)o(´・ω・`)
PHPって携帯会社の名前じゃないのか!?(´・ω・`)o(´・ω・`)o(´・ω・`)o
              ○       o(´・ω・`)o(´・ω・`)○ o   ○
                          (´・ω・`)○(´・ω・`)
                    ○ 。  o    o ○。  

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

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

5、チンコ!!

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


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
























0997nobodyさん03/08/14 05:47ID:???
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
0998nobodyさん03/08/14 05:47ID:???
ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
ttttttttt
0999nobodyさん03/08/14 05:48ID:???
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
s
1000nobodyさん03/08/14 05:48ID:GvyHuosa
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWW
w
fga545fg45a1g354
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。