2012-05-01 4 views
8

Можно создать дубликат:
What does =~ do in Perl?Что = ~ означает в Perl

В программе Perl я экзаменационной (namly plutil.pl), я вижу много =~ на XML парсер часть. Например, здесь является функция UnfixXMLString (строки 159 к 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-подобный) string UnfixXMLString(string s) , и он использует оператор =~ по параметру (s), а затем возвращает измененную строку, но что она делает?

ответ

17

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

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

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

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

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

$string =~ s/foo/bar/; 
+4

Более конкретно, он используется для привязки оператора 'm //', 's ///' или 'y ///' ('tr ///') к скаляру. Режимы не задействованы для последнего. Его также можно использовать как '$ var = ~ $ re', что почти так же, как' $ var = ~/$ re/'. – tchrist

3

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

$sentence="The river flows slowly."; 
if($sentence =~ /river/) 
{ 
    print "Matched river.\n"; 
} 
else 
{ 
    print"Did not match river.\n"; 
} 
Смежные вопросы