my $last= ( " AB CDE FG HI JKL " =~ /( \w\w )/g )[-1];
print $last, $/;
__END__
prints " FG " (not " HI ")
####
my( $last )= " AB CDE FG HI JKL " =~ /.*(\w+)/sg;
print $last, $/;
__END__
prints "L" (not "JKL")
####
my $string= " AB CDE FG HI JKL ";
my $PATTERN= qr/(?! F)(?: \w+){1,3} /;
# (match space-separated words where the first doesn't start with "F")
my( $last )= $string =~ /.*($PATTERN)/sg;
print $last, $/;
$last= ( $string =~ /($PATTERN)/g )[-1];
print $last, $/;
__END__
prints:
JKL
JKL
never:
HI JKL
####
my $string= reverse " AB CDE FG HI JKL ";
my $PATTERN= qr/(?: \w+){1,3}(?##
my $string= " AB CDE FG HI JKL ";
my $PATTERN= qr/(?! F)(?: \w+){1,3} /;
# (match space-separated words where the first doesn't start with "F")
my $last;
my $end= -1;
while( $string =~ /(?=($PATTERN))/g ) {
my $stop= $+[-1];
if( $end < $stop ) {
$last= $1;
$end= $stop;
}
}
print $last, $/;
__END__
prints " HI JKL " !