perl の if 文の判定がうまくいきません – プログラミング – Home

perl の if 文の判定がうまくい...
 
通知
すべてクリア

[解決済] perl の if 文の判定がうまくいきません


彪子
 彪子
(@彪子)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

お世話になっております。よろしくお願いします。

if 文の分岐が期待どおりにできませんので、教えていただければ幸いです。

あるメール送信フォーム (ソースは (1) )

(1) http://www.niji.or.jp/home/ashizuka/data/postmail01.htm

に、次のような if 文を記述しています。

(2) if ($in{'language'} eq english)
{
(a)
}
else
{
(b)
}

この cgi を呼び出すのに、

(ア) http://www.niji.or.jp/home/ashizuka/postmail01/postmail01.cgi

(イ) http://www.niji.or.jp/home/ashizuka/postmail01/postmail01.cgi/?
language=english

という2つの呼び出しかたを試すと、(ア) はもちろん『偽』ですが、 (イ) の呼び出しかたで
も (b) を実行、つまり『偽』と判定されてしまいます。
もちろん、このスクリプトの中には、ここ以外にも if 文がたくさんあり、これらは私が思っ
たとおりに動いていますので、構文、文法で間違った理解をしていないように思うのですが、何
か原因がおわかりになりましたらお教えいただけないでしょうか。どうかよろしくお願いいたし
ます。


引用未解決
トピックタグ
Web
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

他にも参照しているスクリプトがあるようですが……

POSTでパラメータを読み取っている場合、URLにあるパラメータ読むようになっていない
のでは?
まずは、渡されたパラメータを表示するだけのcgiにして、
うまく受け取っているか確認してみてはどうでしょうか?


返信引用
彪子
 彪子
(@彪子)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

瀬戸っぷさん、ありがとうございます。
まず前回の (イ) は間違いで、正しくは

(ウ) http://www.niji.or.jp/home/ashizuka/postmail01/postmail01.cgi?
language=english

です。すみません。

(ウ) をクリックすると、このフォームの第一画面が表示されますが、この画面のソースを見る
と、パラメータを第二画面に引き継ぐための

(エ) <input type=hidden name=language value=english>

というタグができていることがわかります。
また、

(オ) http://www.niji.or.jp/home/ashizuka/postmail01/postmail01.cgi?
language=english&subject=ホームページから

でアクセスすると、第一画面に

(カ) <input type=hidden name=subject value=ホームページから><input
type=hidden name=language value=english>

というタグができます。subject はメールの件名を指定するパラメータで、 (オ) でメールを
送信すると、あるホームページの管理者に『ホームページから』という件名のメールがとどきま
す。

なお、 (2) の if 文を取り去って、(a) の命令つまり、

$dict{'head01'} = MAIL TRANSMISSION FORM;

等を無条件に実行し、 (b) を実行しないようにしたスクリプトが

(キ) http://www.niji.or.jp/home/ashizuka/postmail01_e/postmail01.cgi

で、これは意図した結果が得られます。
以上やってみた限りでは、私には if 文の分岐以外でおかしいところが見つけられないので
す。
以上を読んでいただいていかがでしょうか。何かおわかりになることがありましたら教えていた
だければ幸いです。どうかよろしくお願いします。


返信引用
彪子
 彪子
(@彪子)
ゲスト
結合: 19年前
投稿: 13
Topic starter  

瀬戸っぷさん、すみません。

瀬戸っぷさんがおっしゃるように、$in の定義ができていなかったようです。

#ア require './cgi-lib.pl';
#ア &ReadParse ( *in) ;

のコメントをはずすと、意図した結果が得られました。でもお恥ずかしいんですが、このスクリ
プトから遠ざかっていたので、どうしてこんなことをしたのか覚えていないのです。すみませ
ん。
どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました