从perl中的管道读取二进制数据

时间:2016-11-16 06:49:32

标签: perl pipe

我想编写一个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

1 个答案:

答案 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