• 締切済み

条件文の扱い方について

こんにちは。現在、組まれていたCGIを編集しており、いろいろ試行錯誤した結果、煮詰まってしまったので知恵を貸していただきたいと思い投稿致しました。 Perlに関しては初心者で、編集しながら少しずつ理解するのがやっとのことなので、的違いなことを言っていたら申し訳ありません。 やりたいことは、外部から入力されたデータを表示させたいのですが $urlという変数が入力された場合と、そうでない場合に表示方法を変えたいのです。 ↓1.外部から入力するためのフォーム ------------------------------------ <form action="abc.cgi" method="post"> <input type="hidden" name="mode" value="regist"> お名前<br> <input type="text" name="name" value="" size="40"><br><br> URL<br> <input type="text" name="url" value="" size="40"><br><br> コメント<br> <textarea name="comment" cols="50" rows="7"></textarea><br> <input type="submit" value="送信する"> </form> ------------------------------------ ↓2.外部から入力されたものを、datファイルに書き出ししている部分 ------------------------------------ truncate(DAT, 0); seek(DAT, 0, 0); print DAT "$no\t$now\t$in{'name'}\t$in{'comment'}\t$ENV{'REMOTE_ADDR'}\t$in{'url'}\t\n"; print DAT @data; close(DAT); ------------------------------------ ↓3.datファイルからデータを読み込み、最後に表示するための部分(今回はここの部分の編集をしています) ------------------------------------ while (<IN>) { my ($no,$date,$name,$comment,$ip,$url) = split(/\t/); print "<div class=\"line_wrap\">"; print "<div class=\"line_left\">$date\n</div>"; print "<div class=\"line_right\"><a href=\"$url\">\n$comment</a>"; print "\n</div>"; print "</div>"; } close(IN); ------------------------------------ 今現在の状態では、URLが入力されていない場合でも、空リンクがついてしまいます。 それを、入力されている場合と入力されていない場合で変えたいのですが、Excelで言うif関数のようなもの(while?だとしたら、whileの中にwhileを入れられるのか、どう入れればよいのか・・・)を使わなきゃいけない、というところで行き詰ってしまいました。 (URLを入力しなくても、datファイルには“入っていないよ”という、“空”が入ってしまっていて、if系も使えないかもしれないと不安も感じています。) それ以外でも全然かまわないのですが、何か方法がありましたら お教えいただけるとうれしいです。よろしくお願い致します。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

変数 $url が空でないときだけリンクをつけたいなら print "<div class=\"line_right\"><a href=\"$url\">\n$comment</a>" unless $url eq ''; でいいと思う. 「空白だけからなる」場合にどうしたいのかは知らない. でも「regist」はひどいなぁ.... 昔の FORTRAN じゃあるまいし, 無理に 6文字に詰めなくてもいいのに.

hotasora
質問者

お礼

回答ありがとうございました。 registがひどいとおっしゃったので、今少し調べてみましたが、言葉としてひどいということですか? 下手にソースをいじると、他の関係している部分が壊れそうで怖いので今回はこのままにしておきますが、次回から気をつけます。 質問させていただいた内容は、なんとかifを駆使して解決しました! が、そんな簡単な方法があったのですね。 解決してから分かりましたが、私の質問はやはり的外れな部分がありお恥ずかしいです。 ありがとうございました。

関連するQ&A