in reply to if ($2) behaves differently than if (defined $2)
Here is an example to illustrate the point:
#!/usr/bin/env perl use warnings; use strict; my $str; $str = 'abc def 12'; $str =~ /(\d+)/; print "$1\n" if ($1); $str = 'foo'; $str =~ /(\d+)/; print "$1\n" if ($1); if ($str =~ /(\d+)/) { print "$1\n"; } else { print "no match\n"; }
prints:
12 12 no match
The 2nd "12" is unexpected since the string 'foo' contains no digits.
|
|---|