From 0649b7cf88bc5ee2dca687ad984cdb5dd59528ae Mon Sep 17 00:00:00 2001 From: Roger Bell_West Date: Wed, 30 Oct 2019 08:59:21 +0000 Subject: Solutions for challenge #32 --- challenge-032/roger-bell-west/perl5/ch-1.pl | 27 +++++++++++++++++++++++++++ challenge-032/roger-bell-west/perl5/ch-2.pl | 28 ++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100755 challenge-032/roger-bell-west/perl5/ch-1.pl create mode 100755 challenge-032/roger-bell-west/perl5/ch-2.pl diff --git a/challenge-032/roger-bell-west/perl5/ch-1.pl b/challenge-032/roger-bell-west/perl5/ch-1.pl new file mode 100755 index 0000000000..364358e37f --- /dev/null +++ b/challenge-032/roger-bell-west/perl5/ch-1.pl @@ -0,0 +1,27 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Getopt::Std; +use Text::CSV_XS; + +my %o; +getopts('c',\%o); + +my %s; +while (<>) { + chomp; + $s{$_}++; +} + +my $csv = Text::CSV_XS->new; + +foreach my $k (sort {$s{$b} <=> $s{$a} || + $a cmp $b} keys %s) { + if ($o{c}) { + $csv->say(*STDOUT,[$k,$s{$k}]); + } else { + print "$k $s{$k}\n"; + } +} diff --git a/challenge-032/roger-bell-west/perl5/ch-2.pl b/challenge-032/roger-bell-west/perl5/ch-2.pl new file mode 100755 index 0000000000..78402d2954 --- /dev/null +++ b/challenge-032/roger-bell-west/perl5/ch-2.pl @@ -0,0 +1,28 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use List::Util qw(max); + +my $data = { apple => 3, cherry => 2, banana => 1 }; +generate_bar_graph($data); + +sub generate_bar_graph { + my $data=shift; + my $width=shift || $ENV{COLUMNS} || 80; + my $labelordering=shift or 0; + my @k=keys %{$data}; + if ($labelordering) { + @k=sort @k; + } else { + @k=sort {$data->{$b} <=> $data->{$a}} @k; + } + my $kl=max(map {length($_)} @k); + my $bw=$width-$kl-3; + my $scale=$bw/max(values %{$data}); + my $format='%-'.$kl.'s | %-'.$bw."s\n"; + foreach my $k (@k) { + printf($format,$k,'#' x ($scale*$data->{$k})); + } +} -- cgit