in reply to Re: Mysterious Whitespaces between each character in a file (hack for 5.6.x)
in thread Mysterious Whitespaces between each character in a file
$/="\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.)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Mysterious Whitespaces between each character in a file (hack for 5.6.x)
by almut (Canon) on Oct 08, 2009 at 17:08 UTC | |
by ikegami (Patriarch) on Oct 08, 2009 at 17:16 UTC | |
by almut (Canon) on Oct 08, 2009 at 17:29 UTC | |
by ikegami (Patriarch) on Oct 08, 2009 at 17:36 UTC |