/ / のんべんだらり

Perl で Open3

IPC::Open3 モジュールは標準出力、標準エラーを同時に扱えるモジュールなのですが、
open3に渡す $cmd_err が undef の場合標準エラーも $cmd_out で扱われてしまいます。
なので、Symbol::gensymなどで初期化します。


#!/usr/bin/perl
use strict;
use warnings;
use IPC::Open3;
use Symbol;

my $cmd = "ls ./hoge ./huga"; # execute command

my ($cmd_in, $cmd_out, $cmd_err) = (gensym, gensym, gensym);
open3($cmd_in, $cmd_out, $cmd_err, $cmd);

my @out = <$cmd_out>;
my @err = <$cmd_err>;

printf"# stdout #\n";
print @out;
printf"# stderr #\n";
print @err;
printf"##\n";

close $cmd_in;
close $cmd_out;
close $cmd_err;

こんな具合。

コメント
最近の注目記事

/ / のんべんだらり