aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Sommrey <28217714+jo-37@users.noreply.github.com>2023-03-11 16:08:29 +0100
committerJörg Sommrey <28217714+jo-37@users.noreply.github.com>2023-03-23 18:03:39 +0100
commit73c2861e3562b8e493511793edf9c0fba8c5b7f2 (patch)
treed9cfac44cf660b848450f6aef157f42d1b009def
parentb22a976b7bfddaaccf1f01f6eb3f5803b4ed0c37 (diff)
downloadperlweeklychallenge-club-73c2861e3562b8e493511793edf9c0fba8c5b7f2.tar.gz
perlweeklychallenge-club-73c2861e3562b8e493511793edf9c0fba8c5b7f2.tar.bz2
perlweeklychallenge-club-73c2861e3562b8e493511793edf9c0fba8c5b7f2.zip
Challenge 004 task 2
-rwxr-xr-xchallenge-004/jo-37/perl/ch-2.pl40
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;
+}