$teststring = 'blah not-so-good blah not-too-shabby '; while($teststring =~ m/^.* ([a-z]+-[a-z]+-[a-z]+) .*$/i){ ($x = $teststring) =~ s/(^.* )([a-z]+-[a-z]+-[a-z]+)( .*$)/\2/gi; $teststring =~ s/(^.* )([a-z]+-[a-z]+-[a-z]+)( .*$)/\1 phrase \3/gi; print "$x\n"; }