in reply to Re: Mostly Harmless
in thread Mostly Harmless

Here is another approach (again, for one pair of words, so extending would be an exercise for the reader):

use strict; use warnings; my $str1 = q{CHARLIE ROOT}; my $str2 = q{HARRY NODE}; my $output = process( $str1, $str2 ) . q{ } . process( $str2, $str1 ); print $output, qq{\n}; sub process { my ( $word1, $word2 ) = @_; my @letters_to_remove = grep{ ! m/\s+/; } split //, $word2; my $remove_str = join q{}, q{[}, @letters_to_remove, q{]}; my $result = $word1; $result =~ s/$remove_str//g; return $result; }

Output:

CLI T Y ND

In this code, a character group is constructed on the fly, and a substitution operation replaces each member globally in the string with nothing, removing the character. (The string is not as efficient as it could be, since it may contain repeated characters, but this was off-the-cuff code, so there we are.)

Hope that helps-if not in usefulness, then at least in seeing different possible approaches to the same problem.