web-dev-qa-db-ja.com

Perlで=〜はどういう意味ですか?

重複の可能性:
Perlで=〜は何をしますか?

私が調べているPerlプログラム(名前は plutil.pl )では、XMLパーサー部分に多くの=~があります。たとえば、関数UnfixXMLString(1.7の行159から167$VERSIONは誤って「1.5」として宣言されています)):

sub UnfixXMLString {
    my ($s) = @_;

    $s =~ s/&lt;/</g;
    $s =~ s/&gt;/>/g;
    $s =~ s/&amp;/&/g;

    return $s;
}

私の知る限り、そのCプロトタイプは(Cのような)string UnfixXMLString(string s)であり、パラメーター(s)で=~演算子を使用して、変更された文字列を返しますが、やってるの?

9
Cole Johnson

=~はPerl バインディング演算子 です。通常、正規表現を文字列に適用するために使用されます。たとえば、文字列がパターンに一致するかどうかをテストするには、次のようにします。

if ($string =~ m/pattern/) {

または、文字列からコンポーネントを抽出するには:

my ($first, $rest) = $string =~ m{^(\w+):(.*)$};

または、置換を適用するには:

$string =~ s/foo/bar/;
20
duskwuff

=~はPerlバインディング演算子であり、正規表現の一致が発生したかどうか(trueまたはfalse)を判別するために使用できます。

$sentence = "The river flows slowly.";
if ($sentence =~ /river/)
{
    print "Matched river.\n";
}
else
{
    print "Did not match river.\n";
}
3
octopusgrabbus