Perl - Por que não consigo usar uma variável no regex?

1

Sinto muito não ser muito específico no título, mas não consegui especificá-lo mais do que isso.

Por que não posso usar if($l =~ $ARGV[0]) , mas posso usar if($l =~ /$ARGV[0]/g ?

primeiro caso
$ perl script.pl '/^[\w]/g'
segundo caso
$ perl script.pl '^[\w]'
    
por The dude 13.12.2015 / 17:50

1 resposta

3

$ARGV[0] é uma string escalar. Quando você faz if($l =~ $ARGV[0]) e $ARGV[0] é '/^[\w]/g' , isso equivale a if($l =~ '/^[\w]/g') em vez de if($l =~ /^[\w]/g) . No primeiro caso, as barras são simplesmente caracteres em uma string, enquanto no final elas fazem parte da sintaxe Perl que delimita uma expressão regular.

    
por 13.12.2015 / 18:26

Tags