http://www.perlmonks.org?node_id=541140


in reply to my $x or my ($x)

Another place where the effect of my $x; and my ($x); differs is in matching regular expressions. Assigning a match in scalar context just records whether the match was successful, like this

perl -e 'my $x = "abcdefg" =~ /(cd)/; print "$x\n";'

prints

1

whereas matching in list context assigns the captures in the match

perl -e 'my ($x) = "abcdefg" =~ /(cd)/; print "$x\n";'

prints

cd

Normally, or rather probably, you would be making more than one capture in the regular expression so you would do something like

my($this, $that) = $string =~ /abc(def).+?(pq)$/;

Cheers,

JohnGG