Что означает =~ в Perl [дубликат]

Возможные Дубликаты:
что делает =~ в Perl?

в программе Perl я изучаю (namly plutil.pl), я вижу много =~ на части синтаксического анализатора XML. Например, вот функция UnfixXMLString (строки 159 to 167 на 1.7 ($VERSION ошибочно заявлена как "1.5"))

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

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

    return $s;
}

из того, что я могу сказать, его прототип C будет (c-like)string UnfixXMLString(string s), и он использует =~ оператор по параметру (s), а затем возвращает измененную строку, но что она делает?

2 ответов


=~ Это Perl оператор привязки. Он обычно используется для применения регулярного выражения к строке; например, чтобы проверить, соответствует ли строка шаблону:

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

или для извлечения компонентов из строки:

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

или применить замену:

$string =~ s/foo/bar/;

=~ является оператором привязки Perl и может использоваться для определения соответствия регулярному выражению (true или false)

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