[Perl] Où $1 est-il capturé?
Wernerus Sebastien
s.wernerus at gmail.com
Mar 29 Mar 16:37:47 CEST 2016
Cela peut effectivement venir d'une capture antérieure.
Essaye plutôt ceci:
foreach my $r_num ( keys %{$self->{mnet}{$mnet_num}{rc}} ){
my $r_id = $self->{rc}{$r_num}{id};
if ($r_id =~ s/_(B|LR|RL)$//) {
my $dir = $1;
$buf{$r_id}{$dir} = $r_num;
} else {
die "Invalid ID syntax: [$r_id]\n";
}
}
2016-03-29 14:15 GMT+02:00 Sébastien MORETTI <sebastien.moretti at unil.ch>:
> 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
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
>
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/mailman/private/perl/attachments/20160329/6a6db265/attachment-0001.html>
Plus d'informations sur la liste de diffusion Perl