in reply to Finding words within a character set
use strict; use warnings; my %words = map { $_ => countLetters($_)} qw/tar rat at attitude tap o +ther/; my $input = 'art'; my $input_letters = countLetters($input); my @matched_words; WORD: for my $word (sort keys %words) { for my $letter (keys %{$words{$word}}) { next WORD unless exists($input_letters->{$letter}) && $input_l +etters->{$letter} >= $words{$word}{$letter}; } push @matched_words, $word; } print "Matched words: @matched_words\n"; sub countLetters { my $word = shift; my %letters; $letters{$_}++ for split //, $word; return \%letters; }
|
|---|