#!/usr/bin/perl -l use strict; use warnings; $_ = do{local $/; }; /^((\w*) (.) (\w*))$ # find a first word .* # skip non match lines ^(\2 (?!\3). \4)$ # second word same except one letter (??{print "$1 $5"})/xms; # print and fail __DATA__ cases carer caser cares bare mare base case bust burt bent sat rat bat matter mattes pat