• ベストアンサー

[CGI]パターンマッチング、置換がうまくいかない

[質問] 以下のような流れのソースを記述したいのですが どうもうまくいきません。 [概要] $queryには"AAA"という文字列が入りそれを000に置換したい [ソース抜粋] $query = $ENV{'QUERY_STRING'}; $query = ~s/A/0/g; print $query 【期待結果】 000 【出力結果】 4294967295 どういう理由でこのような事になるのでしょうか? 初歩的な事かも知れませんが 判断できるかたがもしいれば 解決方法をご教授願いたいと思います。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

CGIのカテゴリで質問されてますけど、使っている言語はPerlですよね? $query = $ENV{'QUERY_STRING'}; $query = ~s/A/0/g; print $query 2,3行目の行末のセミコロンがないのは単なるうち忘れだと思いますが、 本当に $query に 'AAA' という文字列が入ってきていますか? 上記の部分をセミコロンを補って my $query = "AAA"; $query =~ s/A/0/g; print $query; とすると '000'が出力されます。 置換を疑うよりも入力を疑った方がよいような気がしますがどうでしょうか? 最後に 教授 × 教示 ○ です。

SAKENOSAKA
質問者

お礼

ご回答ありがとうございます。 すみません、自己解決しました。 >本当に $query に 'AAA' 入力データには誤りはなかったのですが $query =~ s/A/0/g; この一行のチルダの後ろに半角スペースが入っていたのです。 このスペースを消すとうまくいきました・・・。 >最後に >教授 × >教示 ○ >です。 これは知らずに不用意に誤って使っていました。 慌てて調べました。 たんに教えてもらう程度では「ご教授」を 使うのはおかしいのですねー。 勉強になりました。