You tried to avoid buffered output, but setting of $| affects the currently selected filehandle only (STDOUT by default). Try this after you opened data1.txt:
in reply to fork(): when parent exits, what happens to child?
Hope that helps.
my $saved_fh = select;
$| = 1;
update: to answer your original question: If the child separated itself from the parent (daemonized itself) then generally nothing happens (from the viewpoint of the child) when the parent dies. The orphaned child will get a new foster parent, this is called init in the Unix world. But for example if the child still shared its filehandles with the parent, and these filehandles are attached to a terminal and you close this terminal so these will get closed then the child will get a SIGPIPE. If the signal is not explicitly handled then the child will die. (But see "Complete Dissociation of Child from Parent" in perlipc for a more complete example.)