use strict;
my ($f1,$f2);
($f1, $f2) = 'XaaXbbX' =~ /X(\w+)X(\w+)X/;
print "\$1 = $1; \$2 = $2\n";
print "\$f1 = $f1; \$f2 = $f2\n";
($f1, $f2) = 'XXX' =~ /X(\w+)X(\w+)X/;
print "\$1 = $1; \$2 = $2\n";
print "\$f1 = $f1; \$f2 = $f2\n";
__END__
$1 = aa; $2 = bb
$f1 = aa; $f2 = bb
$1 = aa; $2 = bb
$f1 = ; $f2 =
####
use strict;
my ($f1,$f2);
$_ = 'XaaXbbX';
($f1, $f2) = /X(\w+)X(\w+)X/; # first attempt
print "\$1 = $1; \$2 = $2\n";
print "\$f1 = $f1; \$f2 = $f2\n";
$_ = 'XXX';
($f1, $f2) = /X(\w+)X(\w+)X/; # first attempt
print "\$1 = $1; \$2 = $2\n";
print "\$f1 = $f1; \$f2 = $f2\n";
__END__
$1 = aa; $2 = bb
$f1 = aa; $f2 = bb
$1 = XX; $2 = bb
$f1 = ; $f2 =
####
($_ = "ABCD") =~ /(..)(..)/;
print "$1, $2\n";
$_ = "WXYZ";
print "$1, $2\n";
__END__
AB, CD
AB, CD
####
() = ($_ = "ABCD") =~ /(..)(..)/;
print "$1, $2\n";
$_ = "WXYZ";
print "$1, $2\n";
__END__
AB, CD
WX, YZ