2012-05-01 2 views
8

이 가능한 중복 : 나는 XML 파서에 =~ 많이
What does =~ do in Perl?= ~ 펄 의미합니까 무엇

내가 (namly plutil.pl)를 검사하고 펄 프로그램에서 참조 일부. 예를 들어, 여기에 기능 UnfixXMLString (잘못 "1.5"로 선언 1.7에 167에 선 159 ($VERSION)) 내가 무엇을 말할 수에서

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

는 = ~하는 문자열이 패턴과 일치하는 경우 예를 들어, 테스트 Perl 바인딩 연산자이며 정규식 일치가 발생했는지 (true 또는 false)를 결정하는 데 사용할 수 있습니다.

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