This works:
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 $pos= tell *DATA;
my $pid= fork();
die unless defined $pid;
if ($pid == 0) {
seek $x, $pos, 0;
print "Start c\n";
while (<$x>) {
print "c: $_"; sleep 1;
}
print "stop c\n";
}
else {
seek $y, $pos, 0;
print "Start p\n";
while (<$y>) {
print "p: $_"; sleep 1;
}
print "stop p\n";
}
__DATA__
a
b
c
d
e
Simply reposition the filepointer…
s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
+.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e