Изменить слои ввода-вывода, используемые обратными галочками - PullRequest
4 голосов
/ 10 августа 2011

то есть возможность делать

$result = `my command`;

с использованием :raw, :utf8 и т. Д.

Любые специальные переменные, о которых я не знаю, альтернативные методы или модули, которые могутиспользоваться?

Ответы [ 2 ]

9 голосов
/ 10 августа 2011

Ну, я не знаю, есть ли какие-то специальные переменные, но почему бы не использовать open () для этой задачи? Вы можете указать кодировку для каналов так же, как для файлов:

open(my $cmdin, "-|:raw", "your command");
my $result = join('', <$cmdin>);
close($cmdin);
2 голосов
/ 10 августа 2011

Используйте popen:

open (my $fd, "-|", $prog, @args) 
    or die "Couldn't start $prog: $!";
do_whatever($fd);
while (<$fd>) { ... };

Или, если этого недостаточно, посмотрите на IPC :: Open2 и его двоюродного брата Open3.

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