Here's a couple more while awaiting a ruling on duplicates...
#!/usr/bin/perl
use strict; # https://perlmonks.org/?node_id=11163777
use warnings;
my @wanted = (1, 2, 3, 4, 2);
my $pattern = join '.*', map quotemeta, sort @wanted;
for my $test ('1432', '21432', '1345', 'brown fox', '98276?54321')
{
printf "%20s => %s\n", $test,
(join '', sort split //, $test) =~ /$pattern/s
? "has all" : "does not have all";
}
print "\n";
sub hasall # similar to what I did in https://perlmonks.org/?node_id=1
+1108516
{
my ($have, @want) = @_;
$have =~ s/\Q$_// or return 0 for @want;
return 1;
}
for my $test ('1432', '21432', '1345', 'brown fox', '98276?54321')
{
printf "%20s => %s\n", $test,
hasall( $test, @wanted ) ? "has all" : "does not have all";
}
Outputs:
1432 => does not have all
21432 => has all
1345 => does not have all
brown fox => does not have all
98276?54321 => has all
1432 => does not have all
21432 => has all
1345 => does not have all
brown fox => does not have all
98276?54321 => has all