Я подозреваю, что sleep
не очищает буфер вывода, так что это может объяснить, почему вы не видите ничего распечатанного; Вы можете попробовать:
open (LOG1, $file1) || ((print "\n# Error in opening $file1, make sure it exists! #\n"), $|++, sleep(3), exit);
В любом случае мне кажется, что было бы намного предпочтительнее определить dieAfterDelay
функцию, подобную этой:
sub dieAfterDelay {
my $msg = shift;
my $delay = shift;
my $errNo = shift;
print $msg . "\n", $|++;
sleep($delay);
exit($errNo);
}
что вы можете использовать следующим образом:
open (LOG1, $file1) || dieAfterDelay("\n# Error in opening $file1, make sure it exists! #\n", 3, -1);