aboutsummaryrefslogtreecommitdiff
path: root/challenge-033
diff options
context:
space:
mode:
authorSteven Wilson <steven1170@zoho.eu>2019-11-05 12:12:35 +0000
committerSteven Wilson <steven1170@zoho.eu>2019-11-05 12:12:35 +0000
commita2ec5eb1255af00a03961d25f3d643f63dc5a7a4 (patch)
treefa963d6a4284c4d058cdc2ba8be359833e406809 /challenge-033
parent11a399aca6169d8ca634254d48a99328fffba237 (diff)
downloadperlweeklychallenge-club-a2ec5eb1255af00a03961d25f3d643f63dc5a7a4.tar.gz
perlweeklychallenge-club-a2ec5eb1255af00a03961d25f3d643f63dc5a7a4.tar.bz2
perlweeklychallenge-club-a2ec5eb1255af00a03961d25f3d643f63dc5a7a4.zip
add week 33 task 1 solution
Diffstat (limited to 'challenge-033')
-rw-r--r--challenge-033/steven-wilson/perl5/ch-1.pl40
1 files changed, 40 insertions, 0 deletions
diff --git a/challenge-033/steven-wilson/perl5/ch-1.pl b/challenge-033/steven-wilson/perl5/ch-1.pl
new file mode 100644
index 0000000000..25f3117ef8
--- /dev/null
+++ b/challenge-033/steven-wilson/perl5/ch-1.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/env perl
+# Author: Steven Wilson
+# Date: 2019-11-05
+# Week: 033
+
+# Task #1
+# Count Letters (A..Z)
+# Create a script that accepts one or more files specified on the command-line and count the number of times letters appeared in the files.
+# So with the following input file sample.txt
+# The quick brown fox jumps over the lazy dog.
+# the script would display something like:
+# a: 1
+# b: 1
+# c: 1
+# ...
+# x: 1
+# y: 1
+# z: 1
+
+use strict;
+use warnings;
+use feature qw/ say /;
+
+my @files = @ARGV;
+my %letters_count;
+
+for my $file (@files) {
+ open my $fh, '<', $file or die "Can't open < $file: $!";
+ while ( !eof $fh ) {
+ my @letters = grep {/[[:alpha:]]/} split //, readline($fh);
+ for my $letter (@letters) {
+ $letters_count{ lc $letter } += 1;
+ }
+ }
+ close $fh;
+}
+
+for my $letter ( sort keys %letters_count ) {
+ say "$letter: $letters_count{$letter}";
+}