diff options
| author | Jörg Sommrey <28217714+jo-37@users.noreply.github.com> | 2023-03-11 16:08:29 +0100 |
|---|---|---|
| committer | Jörg Sommrey <28217714+jo-37@users.noreply.github.com> | 2023-03-23 18:03:39 +0100 |
| commit | 73c2861e3562b8e493511793edf9c0fba8c5b7f2 (patch) | |
| tree | d9cfac44cf660b848450f6aef157f42d1b009def | |
| parent | b22a976b7bfddaaccf1f01f6eb3f5803b4ed0c37 (diff) | |
| download | perlweeklychallenge-club-73c2861e3562b8e493511793edf9c0fba8c5b7f2.tar.gz perlweeklychallenge-club-73c2861e3562b8e493511793edf9c0fba8c5b7f2.tar.bz2 perlweeklychallenge-club-73c2861e3562b8e493511793edf9c0fba8c5b7f2.zip | |
Challenge 004 task 2
| -rwxr-xr-x | challenge-004/jo-37/perl/ch-2.pl | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/challenge-004/jo-37/perl/ch-2.pl b/challenge-004/jo-37/perl/ch-2.pl new file mode 100755 index 0000000000..b7065f744a --- /dev/null +++ b/challenge-004/jo-37/perl/ch-2.pl @@ -0,0 +1,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; +} |
