#!/usr/bin/perl use strict; use warnings; my (%Numbers,$i); my @Values = qw/first second third/; $Numbers{$_} = ++$i for @Values; for my $cur (@Values) { my $value = &get_number ($cur); $value .= &get_ordinal ($cur); # more, more.. print "$cur is $value\n"; next; FAILED: print "WRONG: $cur, because: $@!\n"; next; } sub get_number { my $value = shift; if ($value eq "second") { &error("bad value"); } return $Numbers{$value}; } sub get_ordinal { return substr(shift, -2); } sub error { $@ = shift; goto FAILED; }