修改反引号使用的IO层

时间:2011-08-10 17:26:28

标签: perl

即。能够做到

$result = `my command`;

使用:raw:utf8

我不知道的任何特殊变量,可以使用的替代方法或模块?

2 个答案:

答案 0 :(得分:9)

嗯,我不知道是否有任何特殊变量,但为什么不使用open()来执行该任务?您可以像管理文件一样在管道上指定编码:

open(my $cmdin, "-|:raw", "your command");
my $result = join('', <$cmdin>);
close($cmdin);

答案 1 :(得分:2)

使用popen:

open (my $fd, "-|", $prog, @args) 
    or die "Couldn't start $prog: $!";
do_whatever($fd);
while (<$fd>) { ... };

或者,如果这还不够,你应该看看IPC::Open2及其堂兄Open3。