From a2ec5eb1255af00a03961d25f3d643f63dc5a7a4 Mon Sep 17 00:00:00 2001 From: Steven Wilson Date: Tue, 5 Nov 2019 12:12:35 +0000 Subject: add week 33 task 1 solution --- challenge-033/steven-wilson/perl5/ch-1.pl | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 challenge-033/steven-wilson/perl5/ch-1.pl 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}"; +} -- cgit