Dear Perlers,
I am trying to figure out the flow of a try catch block after executing the
'next' statement. In the try statement after illegal division by zero the
program flow reaches catch block and then executes the 'next' statement. After
executing the next statement the control flow has to skip the following
statement
say "The sum of (@total) is $sum\n";
In otherwords, I want to ignore the say statement in case if an exception is
raised. (In the output of the given program, it is printing the total)
There was an error
The sum of (1024 2048 512 0) is 3584
Please help.
[code]
use Try::Tiny;
use 5.010;
my @nums = qw/1024 2048 512 0 4096 256 128/;
my @total;
foreach my $n (@nums) {
try {
push @total, $n;
$sum += $n;
my $result = 1024 / $n;
}
catch {
#no warnings;
next if /Illegal division/;
say "Hello ...\n";
}
finally {
say @_ ? "There was an error" : "Everything worked";
};
say "The sum of (@total) is $sum\n";
}
[/code]
[output]
Exiting subroutine via next at C:/Users/shaji
kalidasan/workspace/juno-sr1/shaji/Rajesh Perl Project/raid.pl line 15.
Everything worked
The sum of (1024) is 1024
Everything worked
The sum of (1024 2048) is 3072
Everything worked
The sum of (1024 2048 512) is 3584
There was an error
The sum of (1024 2048 512 0) is 3584
Everything worked
The sum of (1024 2048 512 0 4096) is 7680
Everything worked
The sum of (1024 2048 512 0 4096 256) is 7936
Everything worked
The sum of (1024 2048 512 0 4096 256 128) is 8064
[/output]
best,
Shaji
-------------------------------------------------------------------------------
Your talent is God's gift to you. What you do with it is your gift back to God.
-------------------------------------------------------------------------------