Perl日記

PerlとかRubyとかPHPとかPythonとか

system()とコマンド入力演算子(逆クオート演算子)の出力

system()と``は似たようなものかと思っていたら、今日唐突にはまったのでメモ。
system()は出力をそのままにしてくれるけど、``は出力結果がreturnされる。

called.pl
#!/usr/local/bin/perl
print "called!!\n";
caller.pl
#!/usr/local/bin/perl

print "system().\n";
system("./called.pl")   == 0 or die $!;

print "\n----------------------\n\n";

print "``.\n";
my $ret = `./called.pl`; # 'stdout' return
print $ret;
$ caller.pl
system().
called!!

----------------------

``.
called!!


ちなみに全く使わないexec()はsystem()と同じだった。