Замечено, что это связано с повторным использованием файлового дескриптора, хотя последний никак не связан с дескриптором STDOUT. Сами файлы в open() могут быть любыми, режим открытия тоже не влияет на результат. Если убрать строки с повторным использованием дескриптора FILE_D, то все начинает работать как надо.
Кто-нибудь может прокомментировать столь необычное поведение? Спасибо.
Собственно, исходник программы:
#!/usr/bin/perl -w
use strict; use locale;
open (FILE_D, '/etc/profile') or die("fail\n"); close (FILE_D);
open (FILE_D, '/etc/passwd') or die("fail\n");
tstprint();
close (FILE_D);
sub tstprint { print "Hello!"; print "Hello2!"; print "Hello3!"; sleep(5); }