如何在perl的另一个文件中写入system命令的输出?

时间:2015-04-03 13:10:00

标签: perl

我正在尝试在perl中运行system命令。我希望命令的输出到另一个文件。我正在尝试运行以下代码,但我无法在result_file中获得结果。

#!/usr/bin/perl
use strict;
use warnings;
use Cwd;

my $path=getcwd();
my $result_file="$path/Something.txt";
open (LOG, ">$result_file") || die "Cannot create file - $!\n";
print "Executing File.\n";
system("dmexpress /run $DTL_file > $result_file") ;
close(LOG);

2 个答案:

答案 0 :(得分:0)

做了一点改变!

  1. 无需在system命令之前打开文件。正如@toolic所暗示的那样。
  2. 2>&1命令中使用system来捕获文件中的错误(如果有)。

    #!/usr/bin/perl
    use strict;
    use warnings;
    use Cwd;
    
    my $path=getcwd();
    my $result_file="$path/Something.txt";
    #open (LOG, ">$result_file") || die "Cannot create file - $!\n";
    print "Executing File.\n";
    system("dmexpress /run $DTL_file > $result_file 2>&1") ;
    #close(LOG);
    

答案 1 :(得分:-1)

您可以使用反引号捕获输出,然后将其打印到文件中:

#!/usr/bin/perl

my $result_file="Something.txt";
open (LOG, ">", $result_file) || die "Cannot create file - $!\n";
print "Executing File.\n";
my $res = `dmexpress /run $DTL_file`;
print LOG $res;
close(LOG);