Instead of poking inside source of some App::* CPAN distribution, I tried to fix app's binary STDOUT output (prevent lf to crlf conversion) using said variable, here's SSCCE:
@echo off
set PERLIO=
perl -E "print qq(\n)" >> tmp
perl -E "binmode STDOUT; print qq(\n)" >> tmp
set PERLIO=:raw
perl -E "print qq(\n)" >> tmp
perl -E "binmode STDOUT; print qq(\n)" >> tmp
set PERLIO=:raw:crlf:pop
perl -E "print qq(\n)" >> tmp
perl -E "binmode STDOUT; print qq(\n)" >> tmp
perl -E "binmode STDOUT, ':crlf'; print qq(\n)" >> tmp
set PERLIO=
perl -Mopen=IO,raw -E "say unpack 'H*', $_ while <ARGV>" tmp
del tmp
output:
0d0a
0a
0d0a
0d0a
0a
0a
0d0a
Line 3 seems to indicate that
The list becomes the default for all Perl's IO
(quote from link above) doesn't work; line 4 is weird -- IO is now broken and unfixable; further lines demonstrate working and toggleable solution (including from the same perl line/script, not shown above), using strange sandwiches -- :raw:crlf:raw works, too. Looks like a bug to me, maybe not urgent (was it always there?), let it be documented, TWIMC.