my $bar = baz();
if ($@) {
die "baz failed!\n";
}
####
my $bar = baz();
if ($@) {
die "baz failed: $@\n";
} # ^^^^
##
##
#!/usr/bin/perl
use strict;
{
package Deal;
sub new { bless {} }
sub make { "No collateral" }
sub free_resources { unlink $_[0]->{tmp} }
sub DESTROY {
my( $self ) = @_;
$self->free_resources()
or die "Failed to free resources: $!\n";
}
}
eval {
my $deal = Deal->new();
die "Can't make a deal: $_\n"
for $deal->make();
1
} or do {
warn "Deal failed: $@\n";
settle();
};
sub settle {
# ...
}
##
##
Deal failed: Can't make a deal: No collateral
##
##
Use of uninitialized value in unlink at - line 7.
(in cleanup) Failed to free resources: No such file or directory
Deal failed: Can't make a deal: No collateral