OK, thnx for the pointers wrt '&' placement.
However, testing binmode() seems to do some odd things;
if I apply the layers of the original to the dup'ed
handle, the layers stack, rather than replace:
use PerlIO;
my $fd;
open($fd, '+>>:raw', 'somefile.data') || die $!;
my $layers = ':' . join(':', PerlIO::get_layers($fd));
print "$layers\n";
#
# this doesn't complain, but the layers aren't being properly applied
#
my $fd3;
open($fd3, "+>>&", fileno($fd)) || die $!;
binmode $fd3, $layers;
print join(',', PerlIO::get_layers($fd3)), "\n";
results in "unix,crlf,unix" as the reported layers for $fd3.
I guess its possible scan and apply layers - but how do I remove
them ? I tried using just "binmode $fd3;", and that still reports
unix,crlf...
And I'm still left in limbo wrt getting handle access modes
on Win32...is there any Win32API solution to that ? |