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

Wernerus Sebastien s.wernerus at gmail.com
Mer 30 Mar 23:39:34 CEST 2016


C'est pour cette raison qu'il faut vérifier que la regex a bien été
reconnue avant d'utiliser $1.

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).

# 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"
    }
}
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/mailman/private/perl/attachments/20160330/17e34120/attachment.html>


Plus d'informations sur la liste de diffusion Perl