web-dev-qa-db-ja.com

Perlで=〜は何をしますか?

タグは変数であり、9eafをチェックしていますが、これはPerlに存在しますか?

ここで「=〜」記号は何をしていて、9eafの前後の「/」文字は何をしていますか?

if ($tag =~ /9eaf/)
{
    # Do something
}
22
Invictus

=~は、正規表現の一致をテストする演算子です。表現 /9eaf/は正規表現です(スラッシュ//は区切り文字、9eafは実際の正規表現です)。言い換えれば、テストは「変数$ tagが正規表現/ 9eaf/...と一致する場合」と言っており、この一致は文字列が$tagにはこれらの文字が含まれています9eaf任意の時点で連続して、順番に。したがって、これは文字列に当てはまります

9eaf

xyz9eaf

9eafxyz

xyz9eafxyz

他にもたくさんありますが、文字列ではありません

9eaxxx
9xexaxfx

その他多数。正規表現の詳細については 'perlre' man page を参照するか、Googleの「Perl正規表現」を参照してください。

32
jmhl

'=〜'演算子は binary binding operator で、次の操作が左側のスカラーを検索または変更することを示します。

デフォルトの(指定されていない)演算子は、一致する場合は「m」です。

マッチング演算子には、正規表現の開始位置と終了位置を指定する文字のペアがあります。最も一般的には、これは「//」です。

Perl Re tutorial 読んでください。

9
user289086

コードは、9eaf$tagの値のサブストリングであるかどうかをテストしています。


$tag =~ /9eaf/

の略です

$tag =~ m/9eaf/

ここで、m//は一致演算子です。正規表現パターン(regexp)9eaf=~=~の左側で返される)によってバインドされた値と照合します。


m//=~などの演算子は、 perlop で文書化されています。

正規表現(例:9eaf)は perlreperlretut で文書化されています。

6
ikegami

これは、スカラー$tag(おそらく文字列)が正規表現/9eaf/に対して一致するかどうかをチェックします。これは、文字列"9eaf"$tagperldoc perlretut をご覧ください。

3
user554546