foreach (<<'-1-', <<'-2-') { -1- -2- if(m[^]sm) { (undef, my %data) = split /\s*^\s*(\w+)\s+=[^\S\n]*\n?/m, $1, -1; use Data::Dumper; print Dumper \%data; } else { print "No match\n"; } }