Wenn ich in C# oder PHP einen try/catch Block mache und im try eine Funktion X gerufen wird, die eine Funktion Y ruft, die eine Funktion Z ruft wo eine Exception geworfen wird, dann kann ich das im catch fangen, ohne dass X und Y was von der Exception wissen müssen. Geht das in Perl auch?
# instanz der main
my $m = bless{};
# eine statische Variable
my $y = 0;
sub x{return shift}
sub y{$y++; return shift}
sub z{die "seufz"}
print eval{
$m->x()->y()->z();
} || "$y $@";
1 seufz at .. wird ausgegeben, y() wurde also ausgeführt. $@ zeigt auf die Zeile wo sub z definiert ist, also wo die ex gefallen ist.
.