aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-11-16 01:45:03 +0000
committerGitHub <noreply@github.com>2019-11-16 01:45:03 +0000
commit7356e3397fbb443378b35e5e7496bc2dc9ae8b31 (patch)
treeae3e1fddc6a8b0917a303ccda1e18f3e2d7521e1
parent95a6b4dd37014a0c23cba0689e528e75414f8e92 (diff)
parent51c3bb5c5ab9c095356d4b01678f24a5ed9cbd2d (diff)
downloadperlweeklychallenge-club-7356e3397fbb443378b35e5e7496bc2dc9ae8b31.tar.gz
perlweeklychallenge-club-7356e3397fbb443378b35e5e7496bc2dc9ae8b31.tar.bz2
perlweeklychallenge-club-7356e3397fbb443378b35e5e7496bc2dc9ae8b31.zip
Merge pull request #934 from davorg/master
Challenge #034 / Tasks #1 & #2
-rw-r--r--challenge-034/dave-cross/perl5/ch-1.pl26
-rw-r--r--challenge-034/dave-cross/perl5/ch-2.pl23
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);