$ perl -MData::Dumper -le '%h = map { $_ => /^FOO((?!BA[RZ]$).*)/ ? $1 : q(does NOT match) } qw/FOO FOOZIM FOOBAR FOOA FOOBAZ FOOBARX/; $Data::Dumper::Terse = $Data::Dumper::Indent = 1; print Dumper \%h' { 'FOOBAR' => 'does NOT match', 'FOOZIM' => 'ZIM', 'FOOA' => 'A', 'FOOBARX' => 'BARX', 'FOOBAZ' => 'does NOT match', 'FOO' => '' }