print comp( 'foo', 'ofo' ) ? "True\n" : "False\n"; print comp( 'foo', 'foo' ) ? "True\n" : "False\n"; print comp( 'abcde', 'bacde' ) ? "True\n" : "False\n"; print comp( 'abcde', 'cabde' ) ? "True\n" : "False\n"; sub comp { my($x,$y)= @_; my($xreg)=join('|', grep $_,map {$1.$3.$2.$4 if $x=~ /^(.{$_})(.)(.)(.*)/ && $2 ne $3} 0..length $x); return $y=~ /^$xreg$/; }