1

IPC::Run を介して perl から git コマンドを実行しようとしています。これは、perl 変数で git からの STDOUT/STDERR-Output をキャッチします。

これが私がしたことです:

use strict;
use warnings;
use IPC::Run;
my $stderr, $stdout, @cmd;
push @cmd, "git";
push @cmd, "clone";
push @cmd, "http://my.gitserver.com/scm/tst2/abc.git";

my $success = IPC::Run::run \@cmd, '>', \$stdout, '2>', \$stderr;
1;

これを実行すると、次のようになります。

  • $stdout: 'abc' に複製しています...
  • $stderr: 空

コマンドラインから git コマンドを直接実行すると、次の出力が得られます。

$ git clone http://my.gitserver.com/scm/tst2/abc.git
Cloning into 'abc'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.

ご覧のとおり、git は、perl の実装で実際にキャプチャしたものよりも多くの出力をコマンドラインで生成します。

何がうまくいかないのですか?

4

1 に答える 1