这是我试过的:
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.