$/="\n\0"; will fail if the file contains character U+0Axx followed by U+yy00 (for any values "xx" and "yy").
Also, you should replace characters outside iso-latin-1 with some fixed character (such as "?") rather than some random character.
This fixes both problems:
local $/ = "\x0A\x00"; for ( my $line = ''; defined( $_ = <> ); $line = '' ) { $line .= $_; redo if length($line) % 2 != 0; print pack 'C*', map { $_ <= 0xFF ? $_ : '?' } unpack 'v*', $line; # -or- # print utf16le($line)->latin1(); }
(Assumes each file in @ARGV is properly formed, i.e. contain an even number of bytes.)
In reply to Re^2: Mysterious Whitespaces between each character in a file (hack for 5.6.x)
by ikegami
in thread Mysterious Whitespaces between each character in a file
by 1wax
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |