使用Perl读取unix命令输出

时间:2013-09-27 20:51:24

标签: perl tcl tk perltk

我需要在命令中运行带变量的命令。我需要捕获输出并将其保存在一行varible或数组中,这没关系。无论如何它将被粘贴到Tk的文本框中。

我试过了:

my @array = '$variable_with_command'; 

我无法真正使用:

my $variable = 'unixcommand $variableinside'; 

因为里面的变量,我已经看到了其他stackoverflow帖子的建议。

适用于:

my $readvariable = 'ls -a';

因为里面没有变量,除非有办法包含变量并且有$ readvariable捕获输出?提前致谢。

这是我的代码(打印零):

sub runBatch {
    my $directory = "/directpath/directoryuser/sasmodules/";
    my $command = 'sasq ' . $directory . $selectBatch; 
    my @batch = system($command);
    print "This is the output\n";
    print "-----------------------------------";
    print @batch; 
    print "-----------------------------------";
}

1 个答案:

答案 0 :(得分:3)

这是答案,以防止任何人根据qx评论。

sub runBatch { 
    my @batch = qx(sasq $director);
    print "This is the output\n";
    print "-----------------------------------\n";
    print @batch; 
    print "-----------------------------------\n";
}

这实际上效果很好 - 使用后引号:`

sub runBatch {
    my $directory = "/path/directory/sasmodules/" . $selectBatch;
    my $command = `sasq $directory`; 
    #my @batch = command
    print "This is the output\n";
    print "-----------------------------------\n";
    print $command; 
    print "-----------------------------------\n";
    print $selectBatch;
}