CGI-BBS > CGI > Perl > Perlについて条件を分岐処理したい。


カレッヂ
カレッヂ


質問者 小野塚貴弘  投稿日 7/4(金) 02:12:36
初めてPerlにチャレンジしています。
たとえばcliant.cgiというCGIが設置してあるとします。
プログラムは下記のようになっているものとします。

if ($id == 123) {
print "あいうえお\n";
}
if ($id == 456) {
print "かきくけこ\n";
}

HTMLの記述を<a href="cliant.cgi?id=123>あ行の表示</a>とした場合、
どのような記述を追加したらよいでしょうか?
変数の代入方法がわかりません。よろしくお願いします。

プロバイダ参照:
サーバのOS:WINサーバ
パソコンのOS:WinNT系
エディタ:メモ帳
FTPソフト:NextFTP
サーバ移転:していない
改造:していない
CGI習熟度:firsttime

回答者 まさ  [削除]  投稿日 7/4(金) 09:30:38
#!/usr/local/bin/perl

use CGI;
$q = new CGI;

$id = $q->param('id');

print "Content-type: text/html\n\n";

if ($id == 123) {
     print "あいうえお\n";
}
elsif ($id == 456) {
     print "かきくけこ\n";
}



質問者 小野塚貴弘  [削除]  投稿日 7/4(金) 13:47:48
できれば、今の条件だと2項目のみになってしまいます。
分岐点を複数(10個くらい)にするにはどのようにif文を変更すればよいのでしょうか?
回答者 まさ  [削除]  投稿日 7/4(金) 14:57:07
単純にif文を並べるだけです。

if ($id == 123) {
     print "あいうえお\n";
}
elsif ($id == 456) {
     print "かきくけこ\n";
}
elsif () {

}
elsif () {

}
elsif () {

}
elsif () {

}
elsif () {

}

perlにはCのようなswitch文がないので見た目はあまり美しくないですけど、こう
するしかないです。

使い方にもよりますけど、条件によってある関数に飛ばすような場合にはリファレンス
を使えば関数テーブルのようなものも作れますけど、基本的には上のようにif文を並べ
るだけでしょうね。

返信(回答)する

 


Web裏技