eval catches. $@ holds the error.
Goal
Catch a die and say the message.
use strict;
use warnings;
use feature 'say';
eval { die "empty till" };
say $@ if $@;use strict;
use warnings;
use feature 'say';
eval { my $n = 12 / 4; say $n };
say $@ || "ok";use strict;
use warnings;
use feature 'say';
sub need_city {
my ($city) = @_;
die "city required" if !$city;
return $city;
}
say need_city("Nairobi");
eval { need_city("") };
say "caught" if $@;use strict;
use warnings;
use feature 'say';
eval { 1 / 0 };
say $@ ? "caught" : "ok";