这就是我的尝试:
my $s = "s" x 1000;
my $r = `echo $s |more`;
但它不起作用,我的程序直接退出......
答案 0 :(得分:6)
它在您的示例中不起作用,因为您从不打印$r
。输出在变量$r
中捕获。通过使用system()
代替,您可以看到输出打印到STDOUT,但是您不能像您(可能)那样使用输出。
只是做:
print $r;
更新:我将say
更改为print
,因为“echo”已经为您提供换行符。
要转义shell元字符,如评论中所述,您可以使用quotemeta.
您还应该知道,将shell的输出捕获到变量时,| more
无效。这个过程很简单:echo | more | $r
,您也可以跳过more
。
答案 1 :(得分:3)
尝试使用system()命令:
my $s = "s" x 1000;
my $r = system("echo $s |more");
将显示您的所有's',并且在$r
中您将获得该命令的结果(在本例中为0)。