my $str="abcd"; my $letters = "ab"; print not_in($str, $letters),"\n"; sub not_in { my $str = shift; my $letters = shift; my (%hash1, %hash2); my @arr1 = split //, $str; @hash1{@arr1} = @arr1; my @arr2 = split //, $letters; my @deleted = grep $_, delete @hash1{@arr2}; @hash2{@arr2} = undef; delete @hash2{@deleted}; return if %hash2; join '', keys %hash1; }