2012-05-01 14 views
8

Duplicar posibles:
What does =~ do in Perl?Lo que sí ~ media = en Perl

En un programa Perl Estoy examinando (namly plutil.pl), veo un montón de =~ en el analizador XML parte. Por ejemplo, aquí es la función UnfixXMLString (líneas 159 a 167 en 1,7 ($VERSION declarados erróneamente como "1.5"))

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

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

    return $s; 
} 

De lo que puedo decir, su prototipo C sería es (C-like) string UnfixXMLString(string s) , y usa el operador =~ en el parámetro (s) y luego devuelve la cadena modificada, pero ¿qué está haciendo?

Respuesta

17

=~ es el Perl binding operator. Generalmente se usa para aplicar una expresión regular a una cadena; por ejemplo, para probar si una cadena coincide con un patrón:

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

O para extraer componentes de una cadena:

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

o para aplicar una substitución:

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

Más específicamente, se usa para vincular un operador 'm //', 's ///', o 'y ///' ('tr ///') a un escalar. Regexes no están involucrados en el último. También se puede usar como '$ var = ~ $ re', que es prácticamente lo mismo que' $ var = ~/$ re/'. – tchrist

3

= ~ es el operador de enlace de Perl, y se puede usar para determinar si se produjo una coincidencia de expresión regular (verdadera o falsa)

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