我有一个文件句柄在其中包含cp1252字符的文件上打开。我想把这个打开的文件句柄放到一个需要原始utf8字节的库中,它将通过网络发送这些文件。Perl将文件句柄就地/从cp1252流式传输到utf-8?
天真的方式做到这一点是写文件拿出来与正确的编码第二个文件,并给第二个文件句柄到库:
use Fcntl qw/SEEK_SET/;
open my $fh_1252, "<:encoding(cp1252)", "1252.txt" || die $!;
open my $fh_utf8, "+>:encoding(utf8)", "utf8.txt" || die $!;
while (<$fh_1252>){ print $fh_utf8 $_ };
seek($fh_utf8, 0, SEEK_SET);
# now give $fh_utf8 to the library for transmission
这似乎像一堆额外的工作。有没有一种方法可以流式传输?我知道我可以使用IO :: Scalar去除写入磁盘的需要,但是我仍然必须将整个内容读入内存。似乎有一种方法可以用流水线进行流式处理,但我现在没有想办法做到这一点。
你说的是Perl库或非perl的库/ propgram?你能给你的操作系统命名(unix/windows)吗? – AnFi 2014-10-03 18:26:43
注意:'open ...,“1252.txt”|| die!!;'表示开放......,(“1252.txt”|| die $!);'(它永远不会死亡)。你想要'打开...,“1252.txt”或者死掉$ !;' – ikegami 2014-10-03 19:44:20