Как мне повторить строку с командой bash больше в Perl? - PullRequest
5 голосов
/ 08 сентября 2011

Вот что я пробовал:

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

Но это не работает, моя программа выходит напрямую ...

Ответы [ 2 ]

6 голосов
/ 08 сентября 2011

Это не работает в вашем примере, потому что вы никогда не печатаете $r.Вывод фиксируется в переменной $r.Используя вместо этого system(), вы можете видеть вывод, напечатанный в STDOUT, но затем вы не сможете использовать вывод, как вы (вероятно) ожидали.

Просто выполните:

print $r;

Обновление:Я изменил say на print, так как "echo" уже дает вам новую строку.

Чтобы экранировать метасимволы оболочки, как указано в комментариях, вы можете использовать quotemeta.

Вы также должны знать, что | more не имеет никакого эффекта при захвате вывода из оболочки в переменную.Процесс просто: echo | more | $r, и вы можете пропустить more.

3 голосов
/ 08 сентября 2011

попробуйте с помощью команды system () :

my $s = "s" x 1000;
my $r = system("echo $s |more");

отобразит все ваши 's', а в $r вы получите результат (в нашем случае 0) команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...