diff options
| author | Dave Cross <> | 2019-11-13 16:54:09 +0000 |
|---|---|---|
| committer | Dave Cross <> | 2019-11-13 16:54:09 +0000 |
| commit | 51c3bb5c5ab9c095356d4b01678f24a5ed9cbd2d (patch) | |
| tree | ae62db0739ea1d7f70e1e8bf2b8a31eddf18e87a /challenge-034 | |
| parent | 15274eaec83534f5100535badd209e36f4f6f463 (diff) | |
| download | perlweeklychallenge-club-51c3bb5c5ab9c095356d4b01678f24a5ed9cbd2d.tar.gz perlweeklychallenge-club-51c3bb5c5ab9c095356d4b01678f24a5ed9cbd2d.tar.bz2 perlweeklychallenge-club-51c3bb5c5ab9c095356d4b01678f24a5ed9cbd2d.zip | |
Challenge #034 / Tasks #1 & #2
Diffstat (limited to 'challenge-034')
| -rw-r--r-- | challenge-034/dave-cross/perl5/ch-1.pl | 26 | ||||
| -rw-r--r-- | challenge-034/dave-cross/perl5/ch-2.pl | 23 |
2 files changed, 49 insertions, 0 deletions
diff --git a/challenge-034/dave-cross/perl5/ch-1.pl b/challenge-034/dave-cross/perl5/ch-1.pl new file mode 100644 index 0000000000..68cd75d97b --- /dev/null +++ b/challenge-034/dave-cross/perl5/ch-1.pl @@ -0,0 +1,26 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use feature 'say'; + +open my $fh, '<', '/etc/passwd' or die $!; + +my @users; + +while (<$fh>) { + chomp; + my %user; + + # Lvalue is a hash slice + # Rvalue is a list slice + @user{qw[user id shell]} = (split /:/)[0, 2, -1]; + + push @users, \%user; +} + +for (@users) { + # Another hash slice + printf "User: %s, Shell: %s\n", @{$_}{qw[ user shell ]}; +} diff --git a/challenge-034/dave-cross/perl5/ch-2.pl b/challenge-034/dave-cross/perl5/ch-2.pl new file mode 100644 index 0000000000..94c66313bc --- /dev/null +++ b/challenge-034/dave-cross/perl5/ch-2.pl @@ -0,0 +1,23 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use feature 'say'; + +my %dispatch = ( + '+' => sub { $_[0] + $_[1] }, + '-' => sub { $_[0] - $_[1] }, + 'x' => sub { $_[0] * $_[1] }, + '/' => sub { $_[0] / $_[1] }, +); + +@ARGV == 3 or die "Usage: Num1 Op Num2\n"; + +my ($x, $op, $y) = @ARGV; + +unless ($dispatch{$op}) { + die "'$op' is not a supported operator\n"; +} + +say "@ARGV is ", $dispatch{$op}->($x, $y); |
