http://qs321.pair.com?node_id=1230099

Skeeve has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to read DATA in a parent and in a child process, but seem to be unable to achieve this.

Simply using <DATA> didn't work.

So I tried fdopen, but still just the parent seems to be able to read my DATA.

What am I doing wrong?

use IO::Handle; use strict; use warnings; my $x= IO::Handle->new(); $x->fdopen(fileno(DATA), "r"); my $y= IO::Handle->new(); $y->fdopen(fileno(DATA), "r"); my $pid= fork(); die unless defined $pid; if ($pid == 0) { print "Start c\n"; while (<$x>) { print "c: $_"; sleep 1; } print "stop c\n"; } else { print "Start p\n"; while (<$y>) { print "p: $_"; sleep 1; } print "stop p\n"; } __DATA__ a b c d e

Output is:

Start p p: a Start c stop c p: b p: c p: d p: e stop p

Update In an earlier version I mixed up parent and child. Fixed.


s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
+.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e