[Perl] Où $1 est-il capturé?
Sebastien Moretti
sebastien.moretti at unil.ch
Jeu 31 Mar 09:12:07 CEST 2016
> C'est pour cette raison qu'il faut vérifier que la regex a bien été
> reconnue avant d'utiliser $1.
Tu prêches un converti!
> Exécute le code qui suit pour illustration. Le premier bloc est
> incorrect car $1 conserve sa valeur tant qu'une nouvelle correspondance
> n'est pas réussie (auquel cas $1 est mis à jour).
Je pensais quand même qu'il y avait une limite, un scope, à ça.
Mais non semble-t-il.
Potentiellement très dangereux.
> # BAD
> foreach my $r_id ( qw(qsdqsdqsd_B qsdqsdqsd_A qsdqsdqsd_LR) ) {
> $r_id =~ /_(B|LR|RL)$/;
> print "FOUND: $1\n";
> }
>
> # GOOD
> foreach my $r_id ( qw(qsdqsdqsd_B qsdqsdqsd_A qsdqsdqsd_LR) ) {
> if ( $r_id =~ /_(B|LR|RL)$/ ) {
> print "FOUND: $1\n";
> } else {
> print "FAILED!\n"
> }
> }
--
Sébastien Moretti
Plus d'informations sur la liste de diffusion Perl