#! perl -slw use strict; use Carp; use Try::Tiny; use constant { ERROR123 => 'Divisor is undefined', ERROR456 => 'Divisor is zero', }; sub divide { my( $e, $d ) = @_; croak ERROR123 unless defined $d; croak ERROR456 if $d == 0; return $e / $d; } my $result; try{ $result = divide( @ARGV ); } catch { die "You forgot to supply the second argument\n" if $_ =~ ERROR123; die "Dividing anything by zero is infinity\n" if $_ =~ ERROR456; die "Unknown error $_\n"; }; print "Result: $result";