• ベストアンサー

PERLの「!=」と「=~」 or 「if」と「unless」必ずしも真反対の意味ではない?

下記コードは、同じ意味だと思っていたのですが、 実行すると違った結果が表示されます。 何故でしょうか? my $string = 'A-test'; unless($string =~ m/-Hoge/){print '=~>',$string;} if($string != m/-Hoge/){print '!=>',$string;}

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

  • ベストアンサー
回答No.2

if($string != m/-Hoge/){print '!=>',$string;} でなくて if($string !~ m/-Hoge/){print '!=>',$string;} だと思います。

pevtone
質問者

お礼

回答いただきありがとうございます。 あ!そうですね。 そうでした!

その他の回答 (1)

  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.1

違います。 unless($string =~ m/-Hoge/){print '=~>',$string;}  ↑ 変数 $stringに文字列 「-Hoge」 が無かったら { }内を実行する if($string != m/-Hoge/){print '!=>',$string;}  ↑ 変数 $stringの値と $_=~/-Hoge/マッチング結果(真/偽)が不等だったら{ }内を実行する。(この場合、マッチング結果は「偽」で式が成立しない) したがって、 【結果】 =~>A-test

pevtone
質問者

お礼

回答いただきありがとうございます。 そうですね。勘違いしていました。

関連するQ&A

専門家に質問してみよう