我想编写一个Perl脚本,它从管道中捕获二进制数据并读取Perl中的二进制数据,并将接收到的二进制内容作为文件处理程序处理。
我能够从管道接收二进制内容,问题在于从Perl读取数据时二进制格式无法正确保留。不保留NUL字符,并将此字符转换为Perl环境中的换行符。以下是命令行参数和示例
>more D:\Sample_binary.zip| perl readpipe.pl D:\sample_output.txt
readpipe.pl
local $/;
my $lines = <STDIN>; # Read the binary data from pipe
open my $IN, "+<", \$lines; # Load the content as file handler
$zip = Archive::Zip->new;
$zip->readFromFileHandle ($IN); # Read ZIP file from the received binary data
答案 0 :(得分:1)
处理二进制数据时,请使用my_plot_function <- function() {
geom_hline(yintercept = 3, linetype = 'dashed')
}
mtcars %>%
ggplot() +
geom_point(aes(mpg, wt)) + my_plot_function()
。它将阻止CRLF⇔LF转换,并将禁用任何编码层(由binmode(STDIN);
或其他任何内容添加)。
不保留NUL字符,并将此字符转换为Perl环境中的换行符。
不,Perl没有这样做。也许use open
是?使用
more