#! /usr/bin/perl use strict; use warnings; use List::MoreUtils qw(all); sub hasAllLetters { my ($sentence, $letters) = @_; # all we're doing is checking for each letter. all { $sentence =~ $_ } split //, $letters; # same as above, but with index which I think is less readable. #all { index($sentence, $_) >= $[ } split //, $letters; } # tests for my $t ( [ "abxcd zwe rrv", "zxv" ], [ "abxcd zwe rrv", "qxv" ], ) { if (hasAllLetters(@$t)) { print "YES [$t->[0]] ~~ [$t->[1]]\n"; } else { print "NO [$t->[0]] !~ [$t->[1]]\n"; } }