c:\@Work\Perl\monks>perl -wMstrict -le
"$_ = 'Three, Four, One, Two';
;;
/([A-Z][a-z][.][\b])/;
print qq{'$1' '$2' '$3' '$4'};
;;
/([A-Z] [a-z]+ (?: , | \b))/x;
print qq{'$1' '$2' '$3' '$4'};
"
Use of uninitialized value $1 in concatenation (.) or string at -e line 1.
Use of uninitialized value $2 in concatenation (.) or string at -e line 1.
Use of uninitialized value $3 in concatenation (.) or string at -e line 1.
Use of uninitialized value $4 in concatenation (.) or string at -e line 1.
'' '' '' ''
Use of uninitialized value $2 in concatenation (.) or string at -e line 1.
Use of uninitialized value $3 in concatenation (.) or string at -e line 1.
Use of uninitialized value $4 in concatenation (.) or string at -e line 1.
'Three,' '' '' ''
####
c:\@Work\Perl\monks>perl -wMstrict -le
"my $s = 'foo bar baz';
$s =~ m{ (foo) \s* (bar) \s* (baz) }xms;
print qq{A: '$1' '$2' '$3'};
;;
$s =~ m{ (xyzzy) }xms;
print qq{B: '$1' '$2' '$3'};
;;
$s =~ m{ (b \w*) }xms;
print qq{C: '$1' '$2' '$3'};
"
A: 'foo' 'bar' 'baz'
B: 'foo' 'bar' 'baz'
Use of uninitialized value $2 in concatenation (.) or string at -e line 1.
Use of uninitialized value $3 in concatenation (.) or string at -e line 1.
C: 'bar' '' ''
##
##
c:\@Work\Perl\monks>perl -wMstrict -le
"my $s = 'Three, Four, One, Two, xFive9';
print qq{'$s'};
;;
my @numbers = $s =~ m{ \b [[:upper:]] [[:lower:]]+ \b }xmsg;
printf qq{'$_' } for @numbers;
print '';
;;
my %correct;
@correct{ @numbers } = qw(one two three four);
;;
my ($rx_search) =
map qr{ \b (?: $_) \b }xms,
join '|',
map quotemeta,
keys %correct
;
print $rx_search;
;;
$s =~ s{ ($rx_search) }{$correct{$1}}xmsg;
print qq{'$s'};
"
'Three, Four, One, Two, xFive9'
'Three' 'Four' 'One' 'Two'
(?^msx: \b (?: Four|Three|Two|One) \b )
'one, two, three, four, xFive9'