Hello stm,
last statement is not working here. It says an error "Can't "last" outside a loop block at".
That’s because the do { ... } while (...); construct isn’t a “real” loop; it’s a do operator followed by a while modifier. See perlsyn#Statement-Modifiers. You can re-cast your loop as follows:
{ do { ... if ($retries > 3) { print "3 attempts are failed.\n"; last; } } while ($f_cnt > 1); }
Update 1: Originally I had a LOOP: label on the outer block, and last LOOP; inside the if block; but a simple last; works just as well, and the label isn’t needed.
Alternatively, you could just add another untie @in_array statement immediately before the call to exit.
Update 2: Yet another option is to put the untie statement in an END { ... } block. The contents of any END block(s) will be executed when the script terminates, even if the termination is produced by a call to exit or die.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: Tie::File: untie file handle
by Athanasius
in thread Tie::File, is untie file handle must?
by stm
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |