WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:perlの何が間違ってるかわかりません

0:[投稿] さき [2005/06/14 22:17 ][環境:WIN98 わからない]

下を参考に見てください。
ローカルで実験中なのですが、エラーがでます

#! c:/perl/bin/perl

require 'jcode.pl';

print "Content-type: text/html\n\n";
&form();  
read(STDIN, $form_data, $ENV{'CONTENT_LENGTH'});
&decode();      

$kazu = $cgi{'kazu'};


#計算処理
$r = rand 10;
$com = int($r) + 1;
$com1 = $com - 1;
$com2 = $com + 1;

if($kazu == $com){
    $hantei = "当たり!お金をゲット!";
}
elsif($kazu == $com1) {
    $hantei = "おしい!半分ゲット!";
}
elsif($kazu == $com2) {
    $hantei = "おしい!半分ゲット!";
}    
else {
    $hantei = "はずれ d(´∀`)b逝ってヨシ!";
}
&print_browser();

exit;

#結果表示
sub print_browser{
print <<EOF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>くじ</title></head>
<body>

あなたの選んだ数字は$kazu<br><br>

COMが選んだ数字は$com<br><br>

<font color="red">
$hantei
</font>

</body>
</html>
EOF
}

sub decode{
 @part = split('&', $form_data);
 foreach $i (@part) {          
   ($valiable, $value) = split('=', $i);
   $value =~ tr/+/ /;            
   $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
   jcode'convert(*value,$mycode);#←漢字コードを統一'
   $value =~ s/&/&amp;/g;        
   $value =~ s/"/&quot;/g;      
   $value =~ s/</&lt;/g;        
   $value =~ s/>/&gt;/g;        
   $value =~ tr/\r\n//d;        
   $cgi{$valiable}=$value;      
 }
}
exit;


print <<EOM;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title></title>
</head>
<body>
0から10の好きな数字を入力してください。<br>
<br>
<form action=\"suuji.cgi\" method=\"POST\"><br>
金額<INPUT size="10" type="text" name=\"$kazu\"><br>

<INPUT type="submit" value="O K"><br>
<INPUT type="reset" value="リセットする"><br>
</form>
<body>
</html>

EOM

↑何が間違っているのでしょうか?


1:[回答] 通りがかり。 [2005/06/14 22:21 ]

自分のパソコンにPerlが入っているなら、コマンドプロンプトで

perl -wc xxxxx.cgi

などで、自分でエラーメッセージ見て、デバッグしませんか?
なんか、間違い探しゲームを、みんなにやらせているみたいで…


2:[回答] 通りがかり。 [2005/06/14 22:23 ]

ところで、

&form();

ってあるようですが、formって関数どこにあります?


3:[質問] さき [2005/06/14 22:53 ]

修正です。

#! c:/perl/bin/perl

require 'jcode.pl';

print "Content-type: text/html\n\n";
 
read(STDIN, $form_data, $ENV{'CONTENT_LENGTH'});
&decode();      

$kazu = $cgi{'kazu'};


#計算処理
$r = rand 10;
$com = int($r) + 1;
$com1 = $com - 1;
$com2 = $com + 1;

if($kazu == $com){
    $hantei = "当たり!お金をゲット!";
}
elsif($kazu == $com1) {
    $hantei = "おしい!半分ゲット!";
}
elsif($kazu == $com2) {
    $hantei = "おしい!半分ゲット!";
}    
else {
    $hantei = "はずれ d(´∀`)b逝ってヨシ!";
}
&print_browser();

exit;

#結果表示
sub print_browser{
print <<EOF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>くじ</title></head>
<body>

あなたの選んだ数字は$kazu<br><br>

COMが選んだ数字は$com<br><br>

<font color="red">
$hantei
</font>

</body>
</html>
EOF
}

sub decode{
 @part = split('&', $form_data);
 foreach $i (@part) {          
   ($valiable, $value) = split('=', $i);
   $value =~ tr/+/ /;            
   $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
   jcode'convert(*value,$mycode);#←漢字コードを統一'
   $value =~ s/&/&amp;/g;        
   $value =~ s/"/&quot;/g;      
   $value =~ s/</&lt;/g;        
   $value =~ s/>/&gt;/g;        
   $value =~ tr/\r\n//d;        
   $cgi{$valiable}=$value;      
 }
}
exit;


print <<EOM;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title></title>
</head>
<body>
0から10の好きな数字を入力してください。<br>
<br>
<form action=\"suuji.cgi\" method=\"POST\"><br>
金額<INPUT size="10" type="text" name=\"$kazu\"><br>

<INPUT type="submit" value="O K"><br>
<INPUT type="reset" value="リセットする"><br>
</form>
<body>
</html>

EOM

↑何がおかしいのでしょうか?


4:[回答] さき [2005/06/14 22:57 ]

パールの位置がおかしいとエラーがでましたが
間違ってないと思うんですよね^^;
#! c:/perl/bin/perl
ほかのCGIはこれでできるのに
これだけ変なんですよ^^;
他の文が間違ってるのはわかる部分もあるんですが。


5:[回答] ペイ [2005/06/15 00:41 ]

お〜い、

> 自分のパソコンにPerlが入っているなら、コマンドプロンプトで
>
> perl -wc xxxxx.cgi
>
> などで、自分でエラーメッセージ見て、デバッグしませんか?
> なんか、間違い探しゲームを、みんなにやらせているみたいで…
これの結果は?

>他の文が間違ってるのはわかる部分もあるんですが。
具体的にはどこでしょう?

エラーメッセージは?


6:[回答] 通りがかり。 [2005/06/15 08:02 ]

回答者は、デバッガーじゃない。

以上。


7:[回答] さき [2005/06/15 22:59 ]

私のPCのOSはWIN98なんですけど
コマンドプロンプトってできたかな?

CGIを調べたのは 同じくCGIスプリクトで文法が間違ってないか調べれるスプリクトです。
エラーがあれば何行目が間違ってると表示されますが、
その前にperlの位置がおかしいとエラーが出るので
質問してみました。
他のCGIでためすとperlの位置は間違ってないんですけどね。^^;



8:[回答] さき [2005/06/15 22:59 ]

私のPCのOSはWIN98なんですけど
コマンドプロンプトってできたかな?

CGIを調べたのは 同じくCGIスプリクトで文法が間違ってないか調べれるスプリクトです。
エラーがあれば何行目が間違ってると表示されますが、
その前にperlの位置がおかしいとエラーが出るので
質問してみました。
他のCGIでためすとperlの位置は間違ってないんですけどね。^^;



9:[回答] 通りがかり。 [2005/06/15 23:22 ]

サーバの環境書かずに、Perlの位置がおかしいって言われたって、答えら
れる人間はいないと思います。
このままずっと、スクリプトだけみんなに見せて、超能力を開花させるお
つもりですか?
(それはそれで、ありがたいのですが...苦笑)


10:[回答] 通りがかり。 [2005/06/15 23:24 ]

それと、Windows98だろうがなんだろうが、ActivePerlをインストール
すれば、プロンプトで、デバッグができます。

#Windows98だって、DOSプロンプトがあるでしょ。


11:[回答] @ [2005/06/16 02:20 ]

>>8
実行環境が分かりません。

> その前にperlの位置がおかしいとエラーが出るので
その前ってどのその前ですか?

> CGIを調べたのは 同じくCGIスプリクトで文法が間違ってないか調べれるスプリクトです。
が何しているのかはわかりませんが、その文法チェッカーは問題ないのですか?
文法チェッカにかけないで実行するわけにはいかないのですか?
どこがエラーをはいてますか?サーバーですか?文法チェッカーですか?
エラーメッセージは?
パス以外にエラーが出ている可能性はゼロですか?


12:[回答] ふたばマーク [2005/06/17 23:03 ]

今回も、投稿をするべきか?迷いましたが、お役に立つかどうか?
私もエラーに2、3日悩むことが、しばしばなので、あえて書き込みを致します。
エラー、もしくは、本来の結果が得られない場合は、プログラムを骨、肉、皮の部分に分けて、まずは骨の部分だけで実行しています。そこでエラーが発生したなら今度は、主要な骨格だけにすると原因をつかみやすくなります。骨の部分の部分だけでは、エラーが発生しない場合は、一つずつ肉を付けてみます。この様にしてエラーの原因を探って行くことがしばしばです。
こんな「ふたばマーク」のやり方がお役に立てれば幸いです。


13:[回答] ふたばマーク [2005/06/17 23:03 ]

今回も、投稿をするべきか?迷いましたが、お役に立つかどうか?
私もエラーに2、3日悩むことが、しばしばなので、あえて書き込みを致します。
エラー、もしくは、本来の結果が得られない場合は、プログラムを骨、肉、皮の部分に分けて、まずは骨の部分だけで実行しています。そこでエラーが発生したなら今度は、主要な骨格だけにすると原因をつかみやすくなります。骨の部分の部分だけでは、エラーが発生しない場合は、一つずつ肉を付けてみます。この様にしてエラーの原因を探って行くことがしばしばです。
こんな「ふたばマーク」のやり方がお役に立てれば幸いです。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World