这是我试过的:
my $s = "s" x 1000;
my $r = `echo $s |more`;
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我的程序直接退出...
它在您的示例中不起作用,因为您从不打印$r
.输出在变量中捕获$r
.通过使用system()
相反,您可以看到输出打印到STDOUT,但是您不能像您(可能)预期的那样使用输出.
做就是了:
print $r;
Run Code Online (Sandbox Code Playgroud)
更新:我换say
到print
,因为"回声"已经为您提供了一个换行符.
要逃避shell元字符,如评论中所述,您可以使用quotemeta.
您还应该知道,| more
将shell的输出捕获到变量时无效.这个过程很简单:echo | more | $r
,你也可以跳过more
.