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

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

■ このスレッドは過去ログ倉庫に格納されています
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
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
■ このスレッドは過去ログ倉庫に格納されています