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

时间:2011-09-08 13:06:52

标签: perl bash

这就是我的尝试:

my $s = "s" x 1000;
my $r = `echo $s |more`;

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

2 个答案:

答案 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)。