aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-031/dave-cross/perl5/ch-1.pl34
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-031/dave-cross/perl5/ch-1.pl b/challenge-031/dave-cross/perl5/ch-1.pl
new file mode 100644
index 0000000000..2f6e43fb33
--- /dev/null
+++ b/challenge-031/dave-cross/perl5/ch-1.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature 'say';
+
+sub throws_divide_by_zero_error {
+ my ($numerator, $denominator) = @_;
+
+ eval {
+ no warnings 'void';
+ $numerator / $denominator;
+ };
+
+ if ($@) {
+ return $@ =~ /^Illegal division by zero/;
+ }
+
+ return;
+}
+
+my @numbers = ( 0 .. 10 );
+
+for (1 .. 20) {
+ my $num = @numbers[rand @numbers];
+ my $den = @numbers[rand @numbers];
+
+ print "Dividing $num by $den ";
+ if (throws_divide_by_zero_error($num, $den)) {
+ say 'throws a divide by zero error';
+ } else {
+ say 'is ok';
+ }
+}