如何在Perl中使用bash命令更多地回显字符串?

lex*_*xer 5 bash perl

这是我试过的:

my $s = "s" x 1000;
my $r = `echo $s |more`;
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我的程序直接退出...

TLP*_*TLP 6

它在您的示例中不起作用,因为您从不打印$r.输出在变量中捕获$r.通过使用system()相反,您可以看到输出打印到STDOUT,但是您不能像您(可能)预期的那样使用输出.

做就是了:

print $r;
Run Code Online (Sandbox Code Playgroud)

更新:我换sayprint,因为"回声"已经为您提供了一个换行符.

要逃避shell元字符,如评论中所述,您可以使用quotemeta.

您还应该知道,| more将shell的输出捕获到变量时无效.这个过程很简单:echo | more | $r,你也可以跳过more.