[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