use strict; use warnings; my (%Numbers,$i); my @Values = qw/first second third/; $Numbers{$_} = ++$i for @Values; for my $cur (@Values) { next if eval { my $value = &get_number ($cur); $value .= &get_ordinal ($cur); # more, more.. print "$cur is $value\n"; }; print $@; } sub get_number { my $value = shift; if ($value eq "second") { die "bad value"; } return $Numbers{$value}; } sub get_ordinal { return substr(shift, -2); } #### first is 1st bad value at noname.pl line 25. third is 3rd