Aufbauend auf die und eval kann man einen Exception-Mechanismus
in Perl konstruieren. eval kann einen String oder Block ausführen,
der dann durch Aufruf von die (mit einer Fehlermeldung) verlassen
werden kann. Die Fehlermeldung wird in $@ abgelegt.
Beispiel:
sub cat
{
my $name = $_[0];
open FOO, "< $name" or die "$!";
print while ();
close FOO;
return 1;
}
die "missing filename" unless defined $ARGV[0];
if (!eval { &cat $ARGV[0]; })
{
print STDERR "Ooops... $@";
exit 1;
}
Alternativ kann man auch nach dem eval gegen $@ testen...