私たちは〜について話している
leftvalue =~ rightvalue
rightvalueは、次のいずれかである必要があります。
m/regexp/
s/regexp/replacement/
tr/regexp/translation/
leftvalueは、左の値であれば何でもかまいません。
expresionleftvalue =~ rightwalue
は常にブール値に評価されますが、この値はleftvalueに割り当てられません!このブール値は、式自体の値です。したがって、if句で非常にうまく使用できます。
if (leftvalue =~ rightvalue) {
// do something
}
m/regexp/
何も変更されません。正規表現がleftvalueと一致するかどうかをテストするだけです。
s/regexp/replacement/
また、正規表現がleftvalueと一致するかどうかをテストし、一致する場合は、一致する部分を。に置き換えreplacement
ます。正規表現が一致した場合leftvalue =~ rightvalue
はtrue、それ以外の場合はfalseです。
tr/regexp/replacement/
同様に、と同じs///
ですが、置換の代わりに翻訳があります。
したがって、これは正常に機能します。
my @a=('acbc123','aubu123');
foreach (@a) {
if ($_ =~ s/c(\d)/x$1/g;) {
$_ .= 'MATCHED!';
}
}
結果は次のようになります。
a[0] = 'acbx123MATCHED!'
'c'の後に数字が続くのは、正規表現と一致しました。したがって、istは「x」とその数字に置き換えられました。そして、それが一致したので、ifステートメントはtrueであり、「MATCHED!」文字列に添付されています。
a[1] = 'aubu123'
正規表現が一致しませんでした。何も置き換えられず、ifステートメントはfalseでした。