重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Perl二日目の激初心者です。
端末にパールとアパッチを導入し
テキストを読みながらあくせくしております。

で、早速エラー個所ですが
以下のスクリプトの下のほうの

$comment = "いつもより結構マシ";

の「構」の文字のみブラウザから見ると化けて
「いつもより結鴻}シ」と、なります。

試しに他の文字にしますと
(例えば「随分」とか)エラーは起きません。

質問の仕方や、論点がわかりにくいと思った方は
是非ご指摘下さい。
宜しくお願いします。

■環境
OS:2000
ブラウザ:IE、FireFoxいずれでも同症状を確認
Cドライブ直下にパールとアパッチが入ってます。

■エラーと思われる個所
$saikoro = int( rand 3 );

if($saikoro == 0) {
$kekka = "凶";
$comment = "今日は外れ。";
}

elsif($saikoro == 1) {
$kekka = "小吉";
$comment = "いつも通りじゃない?";
}

else {
$kekka = "大吉";
$comment = "いつもより結構マシ";
}

A 回答 (2件)

'構'の字は、コード8D 5Cであり、エスケープ文字である「\」と勘違いしてしまいます。



#1さんの仰る様に、これが原因で文字化けを起こしていますが、[いつもより結構\マシ]と、文字の後ろに¥です。

なお、この例の様に、""の内容に変数を含めない場合(展開しない場合)には、""ではなく''を用いれば、回避できる事が多いです。
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございます。

なおりました!
こういった「エスケープ文字と勘違い」って多いものなんですかねぇ?

あと、ご指摘どおり "を'に修正し\をつけない状態
 $comment = 'いつもより結構マシ';
に、した所これまたエラーは回避できました。

これからも精進に励みたいと思います。
本当にありがとうございました。

お礼日時:2005/02/28 19:46

日本語に対応していない処理系(コンパイラやインタプリタ)に有りがちな「\」問題でしょうか。


試しに、"いつもより結構マシ"を"いつもより結\構マシ"としてみてください。
C言語で'\n'とすると改行を意味しますが、このとき付ける'\'がエスケープシーケンスになっています。'\'の次の文字と合わせて特殊な文字を現わしているのですが、'\'自身を表現するために'\\'とします。
文字コードを調べるのがめんどうなので解りませんが「構」が'\'と同じ値を持っていたら'\z'みたいになって1バイト分文字が落ちてしまうと言うことです。それを'\'を追加することで補います。
    • good
    • 0
この回答へのお礼

早速のご指摘ありがとうございます。

やってみたのですが...なおりません。
でも、エラーの原因個所に間違いなさそうですし
大変勉強になりました!

やっぱりPerlは難しいです...。
(ちなみに回答No.2 sion_fsさんのご指摘どおり
「結構\マシ」 と、後ろに記載したところ直りました。) 

お礼日時:2005/02/28 19:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!