blob: b7065f744a19d123592d4ea5f6d809979df914a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#!/usr/bin/perl -s
use v5.16;
use warnings;
use experimental 'signatures';
our $letters;
die <<EOS unless @ARGV && $letters;
usage: $0 -letters=LETTERS [FILE]
-letters=LETTERS
list of letters
FILE
Name of a file containing one word per line. Use '-' for STDIN.
EOS
### Input and Output
main: {
my %letters;
$letters{$_}++ for split //, lc $letters;
while (<>) {
chomp;
say if check_word(\%letters, lc);
}
}
### Implementation
sub check_word ($letters, $word) {
my %letters = %$letters;
for my $l (split //, $word) {
return unless exists $letters{$l} && $letters{$l}--;
}
1;
}
|