[Perl] Où $1 est-il capturé?

Sébastien MORETTI sebastien.moretti at unil.ch
Mar 29 Mar 14:15:39 CEST 2016


Hello

je suis en train de tester le code Perl d'un autre gars et j'ai quelques 
soucis avec $1 qui capture je ne sais trop quoi.

     foreach my $r_num ( keys %{$self->{mnet}{$mnet_num}{rc}} ){
         my $r_id = $self->{rc}{$r_num}{id};
         $r_id =~ s/_(B|LR|RL)$//;
         my $dir = $1;
         die "Invalid ID syntax: [$r_id]\n"  unless $dir;
         $buf{$r_id}{$dir} = $r_num;
     }

Auparavant la substitution $r_id =~ s/_(B|LR|RL)$//; était utile car 
$r_id se terminait par _(B|LR|RL).
Désormais ce n'est plus le cas.
Je m'attendais à ce que $dir soit undef mais $dir prend une valeur qui 
vient de je ne sais où. Même comportement si j'enlève la ligne de la 
substitution.

Avez-vous une idée d'où $1 tire sa valeur?
Est-ce possible que ce soit hors de la boucle?

Merci

Perl 5.18.2, Linux 2.6.32-504.el6.x86_64

--
Sébastien Moretti


Plus d'informations sur la liste de diffusion Perl