比較が上手く機能していません。
下のように書いていますが、全て緑になってしまいます。
(真の結果が採用されてしまいます。)
if ($trm14 eq "●") {print "<font color='green'>";}
else {print "<font color='red'>";}
全角は比較できないのでしょうか。
$trm14には間違いなく「●」が入っています。
入らない場合は""になっています。
$trm14はファイルの1項目です。
ちなみに、
以下のようにやればチャンと期待通りに機能します。
●の代わりに「8」を入れてみました。
if ($trm14 == 8) {print "<font color='green'>";}
else {print "<font color='red'>";}
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
れれ もう一度見直してみると
>if ($trm14 eq "●") {print "<font color='green'>";}
> else {print "<font color='red'>";}
>$trm14には間違いなく「●」が入っています
この場合「真」ですよね?
これ以外の場合に「偽」にしたいということですよね(かくに~んw)
#################################################
おっしゃるように、同じコードの中で
#例1
$trm = '●';
print 'OK' if ($trm eq '●');
として、実行すると
#例1実行結果
OK
と出力されるはずです。(ここ確かめてみてください)
上記を踏まえて
もしかして・・・ もしかしてですが
if ($trm14 eq "●")
の部分は、わかりやすくしたのではなくこのままの状態です?
というのも、このままだと「完全一致」ということになりますよね
もし文の中にある●をさがしたいのであれば「正規表現」でマッチさせないといけないです。
if ($trm14 =~ /●/)
だと、文中にある●をさがしてif文を真にさせることができます。
(もうしわけないどのていどのプログラミングレベルかわからないものでこちらもさぐりさぐりですw)
#例2
$trm = 'ははは●ははは';
print 'OK' if ($trm =~ /●/);
#例2実行結果
OK
#----------------------------------------------------
わたしの経験上、Perlでの文字コードは入力も出力もUTF-8に統一したほうがいいです。
というのもSHIFT-JISだと他のコードとかぶる部分があるのでうまくいかないときがありますし、
Perl自体UTF-8よりにできていると聞いたので今までそうしてきました。
ファイルを読み込む際にUTF-8に変換して、プログラムコード自体もUTF-8にすると混乱を避けることができます。
実際にエンコードを変換する方法は以下参照
http://www.rwds.net/kuroita/program/Perl_unicode …
Perlバージョン5位からは以前のように、jcode.plを使わなくとも文字コードの取り扱いが楽になってますよ。
それとプログラムを書く場合、メモ帳ではなく文字コードを指定できる「秀丸」などを使ったほうがいいです。
さらに!
CGIということなのでHTMLの文字コードタグも同じにしないといけませんよー
とりあえず、思いつく限りを羅列してみました。何かのヒントになればいいのですがいろいろな環境がありますので「これだ!」とは言い切れないのが・・・わたしも年食った証拠かな><;
お礼が遅くなりました。
何回も有り難うございます。
色々教えていただきましたが、
ズバリの比較ではダメでした。
やはりtrm14が●と認識されていないみたいです。
正規表現に直してやってみたら、真偽の判定が出来ました。
ただ、●はtrm14にあるだけではないので、結論は使えません。
そして、
色々やった結果、上手く行きました。
実際のファイルで、trm14は最後の項目でした。
区切り符号に<>を使っており、trm14の後ろに<>が無かったので入れたら上手く判定できました。
今回教えていただいたことは別途復習しておきます。
大変お世話になりました。
No.3
- 回答日時:
いちおう念の為ですが, 「文字の扱いが楽になった」のは Perl5.8 以降といっていいと思います>#2. 5.6 より前 (5.
003 とかの時代) ではあまり考えられていなかったし, 内部的に Unicode化した 5.6 も実際上はいろいろと問題があったはず.No.1
- 回答日時:
おそらく 文字コードの問題ではないでしょうか?
$trm14とPerlプログラムのエンコードを同じにして比較すると、期待通りになると思いますよ。
試しにWindowsのコマンドプロンプトでやってみたところ、問題なく機能していました。
この回答への補足
お礼に書き忘れましたので、
ココに書かせて貰いました。
質問で
>$trm14には間違いなく「●」が入っています。
と書きましたが、どう調べたのかといいますと、
print "$trm14\n";とやって●が表示された、
ということです。
これだと同じcgi内でやっていることなので、
文字コードは同じと解釈されている、ということにはならないのでしょうか。
今ひとつ分かっていません。
宜しくお願いします。
早速有り難うございました。
まず、全くダメではないとのこと、
少しは希望がもてました。
して、エンコードを合わせる件ですが、
具体的にはどうすれば宜しいのでしょうか。
実際の動きは、
$trm14の項目を持つファイルは、excelから作り出しているテキストファイルです。
それをcgiで入力し、ある項目を表示する際に●が入っていれば緑、入っていなければ赤と
表示し分けたいというモノです。
cgiで表示するページの指定は、
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
のようにしています。
これをexcel作業時のエンコードに合わせる、ということでしょうか。
(といってもどうすればよいか分かりません。)
お手数ですが、
具体的に教えていただければ嬉しいです。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- HTML・CSS HTMLソースの質問 3 2022/07/28 13:29
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- HTML・CSS HTMLで特定の文字だけ色を変えたいのですが、指定した色と違う色が反映してしまいます。 下記、「前」 5 2023/06/27 12:08
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【至急!!!】python言語で本を見...
-
UWSCのSELECT文の記述方法
-
16進の10進変換について
-
c言語 16進数の2進数への変換
-
関数「exists」と「defined」の...
-
DBIがうんともすんとも言いませ...
-
$(ドル)の記号を表示したいの...
-
数値かどうかの判定方法
-
Perlにおける<?phpinfo();?>の...
-
Use of uninitialized value ---
-
pythonで演算子を変数に代入す...
-
掲示板からのメールの本文中に...
-
Python3
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
SELECT OPTIONの中身をコピペ...
-
FindFirst を複数条件で検索
-
構造体の各データの表示につい...
-
文字の横にプルダウンを表示さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
16進の10進変換について
-
【至急!!!】python言語で本を見...
-
pythonで演算子を変数に代入す...
-
数値かどうかの判定方法
-
pythonの*
-
UWSCのSELECT文の記述方法
-
int(input("○○"))の使い方
-
関数「exists」と「defined」の...
-
c言語 16進数の2進数への変換
-
Perlにおける<?phpinfo();?>の...
-
シェルスクリプトで、空白(ス...
-
I2C接続のLCDディスプレイを使う
-
「HSP」でキャラコードを使って...
-
switch文のエラーについて
-
Use of uninitialized value ---
-
変数の中は文字列か数値か調べ...
-
perでメールが送信出来ない場合...
-
画面上再読み込みをさせたいの...
-
awkの正規表現での最左最短マッ...
-
数値英単語変換
おすすめ情報