• ベストアンサー

不明の「1」が出る。

CGIファイルを実行させると必ずといっていいほど、最後に「1」が表れます。 これは一体何なのでしょうか? なぜ出てくるのでしょうか? 現在以下のようなものを作成したのですが、 if条件であってたばあい、表示されたときに、1が複数出てしまって見栄えが悪いです。 これを消す方法を教えてください。 print "<TABLE CELLSPACING=1>\n"; print "<TR>\n"; print "<TD CLASS=TD1 WIDTH=100>名前</TD>\n"; print "<TD CLASS=TD1 WIDTH=100>ふりがな</TD>\n"; print "<TD CLASS=TD1 WIDTH=100>内線番号</TD>\n"; print "</TR>\n"; for ($i=0;$i<$gyou;$i++){ @log = split(/&/,$FILES[$i]); foreach(@log){ ($key,$value) = split(/=/,$_); $FORM{$key} = $value; $FORM{'SYOZOKU'} =~ s/\n$//g; } if ($searchkey eq $FORM{'SYOZOKU'}){ print &ok;} } sub ok{ print "<TR>\n"; print "<TD CLASS=TD1 HEIGHT=20>$FORM{'NAME'}</TD>\n"; print "<TD CLASS=TD1 HEIGHT=20>$FORM{'KANA'}</TD>\n"; print "<TD CLASS=TD1 HEIGHT=20>$FORM{'BANGOU'}</TD>\n"; print "</TR>\n"; } print "</TABLE>\n"; print "</BODY>\n"; print "</HTML>\n";

質問者が選んだベストアンサー

  • ベストアンサー
  • ryota2
  • ベストアンサー率43% (61/140)
回答No.1

したのほうの if ($searchkey eq $FORM{'SYOZOKU'}){ print &ok;} } ここの print は要りません。

KODAMAR
質問者

お礼

回答ありがとうございます。 printが原因だとはまったくもって気づきませんでした。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • namiri_e
  • ベストアンサー率37% (37/98)
回答No.2

私もはじめはわからなかったのですが、 下の方の回答を見てどう言うことが起こっているのかわかりました。 つまり、サブルーチン呼び出しの前にprintがあるため、 サブルーチン自体が返す「真」という情報を 表示(print)してしまっているのだと思われます。 通常、サブルーチン内で最後に評価された変数が サブルーチンの値として返されるので、 この場合は「真」が返ってきたのでしょう。

KODAMAR
質問者

お礼

回答ありがとうございます。 そういうことだったみたいですね。 まったく気づきませんでした。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A