use PerlIO; my $fd; open($fd, '+>>:raw', 'somefile.data') || die $!; my $layers = ':' . join(':', PerlIO::get_layers($fd)); print "$layers\n"; # # this creates a new file named "&3" # my $fn = fileno($fd); my $fd2; open($fd2, '+>>' . $layers, '&' . $fn) || die $!; # # this dies with "Invalid argument at filemode.pl line ..." # my $fd3; open($fd3, '+>>' . $layers . ' &' . $fn) || die $!; close $fd; close $fd2; close $fd3;