in reply to parsing data pairs from single line

I inserted an unlikely string next to the keywords and then used split.

my $input = "pro my project cOn my customer dAte 2009-10-5 at 17:00 pr +i 2 msg Rack new server"; print "input=$input\n"; my @keywords = qw(pro con date at pri msg); my $splitmarker = "___YABBA_DABBA_DOO___"; my %results; $input =~ s/\b($_)\b/$splitmarker$1/i foreach @keywords; my @parts = split /$splitmarker/,$input; foreach (@parts) { $results{lc($1)} = $2 if /(\w+)\s+(.+?)\s*$/; } foreach (@keywords) { print "$_ = \"$results{$_}\"\n" if exists $results{$_}; }