- ベストアンサー
スカラーを違った形に変えること
クローズ型チャットを作っていて、入室時に発言色を決めるときに テキストボックス(name="scolor")に入力が無かった場合 選択メニュー(name="secolor")から値を得るっていうのを 作っています。 途中まで書いてみたんですが下記の部分 if ($scolor = "") {(この部分)} else {$scolor = &url_enc($in{'scolor'});} に何を書けばいいのかわかりません。 要は&scolorを&secolorに変えられればいいのですが。 最近プログラミングを始めたばかりなので 勉強が足りないのですが、どなたかよろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Web屋です。OkWebの様なサイトを設計, 構築する仕事をしています。 ひとつ、気になる点があるのですが。 if ($scolor = "") の部分ですが、このif文を通過する瞬間に、$scolorの内容は空になってしまいます。 Perlでは、代入演算子の = と、比較演算子の ==, eq を明確に分けています。 いくらif文であっても、 if ($scolor = "") は、$scolorに空文字列を代入。その後その式を評価する。 と言う意味になってしまいます。 また、比較演算子には、数値用と文字用の使い分けがあります。 ==は数値用の比較演算子で、文字用はeqと書きます。 $scolor = &url_enc($in{'scolor'}); if ($scolor eq "") { $scolor = &url_enc($in{'secolor'}); } だと思います。また、この程度の条件式の場合、?: を使った方がスマートに記述できます。 $scolor = &url_enc(($in{'scolor'} eq "") ? $in{'secolor'} : $in{'scolor'}); でも良いかな。なんて思います。 url_encの仕様が分らないので、まとめて良いかどうか、不明ですけど。
その他の回答 (1)
- moon_night
- ベストアンサー率32% (598/1831)
よくわからないのですが、 if ($scolor = "") {$scolor = &url_enc($in{'secolor'});} else {$scolor = &url_enc($in{'scolor'});} ということでは? 渡していないデータを取るということ? それはできないです。 hiddenで渡しておくとか、Perlに埋め込みとかしていればいいのではないでしょうか?