[Perl] Problème regexp en Perl

Paul Gaborit paul.gaborit at gmail.com
Mer 20 Sep 07:53:53 CEST 2017


Le 19/09/2017 à 19:08, Dominique Asselineau a écrit :
> Voici un exemple simple qui me pose
> problème.
> 
> 
> my $text = "+abcd";
> if( $text =~ m/\+/ ) {
>    $text =~ s/$&//;
> }
> print( $text.$/ );
> 
> 
> Bien évidemment il serait facile d'écrire la chose autrement mais ici
> c'est un ECM comme on dit et dans mon cas la regexp est évidemment
> plus complexe.
> 
> Comment faire en sorte que le contenu de $& soit pris comme tel et non comme une regexp ?

Il est possible d'utiliser \Q (puis \E). Petit extrait de 'perlre':

      \Q          quote (disable) pattern metacharacters until \E


Ce qui donne:

my $text = "+abcd";
if( $text =~ m/\+/ ) {
   $text =~ s/\Q$&\E//;
}
print( $text.$/ );

-- 
	Paul Gaborit






Plus d'informations sur la liste de diffusion Perl