用Perl读取unix命令输出

用Perl读取unix命令输出,perl,tcl,tk,perltk,Perl,Tcl,Tk,Perltk,我需要运行一个包含变量的命令。我需要捕获输出并将其保存在一行变量或数组中,这无关紧要。它将被粘贴到Tk中的文本框中 我试过: my @array = '$variable_with_command'; 我真的不能用: my $variable = 'unixcommand $variableinside'; 由于内部的变量,我认为这是其他stackoverflow帖子的一个建议 它适用于: my $readvariable = 'ls -a'; 因为里面没有变量,除非有办法包含变量并让

我需要运行一个包含变量的命令。我需要捕获输出并将其保存在一行变量或数组中,这无关紧要。它将被粘贴到Tk中的文本框中

我试过:

my @array = '$variable_with_command'; 
我真的不能用:

my $variable = 'unixcommand $variableinside'; 
由于内部的变量,我认为这是其他stackoverflow帖子的一个建议

它适用于:

my $readvariable = 'ls -a';
因为里面没有变量,除非有办法包含变量并让$readvariable捕获输出?提前谢谢

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


这是一个答案,以防它帮助任何人基于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;
}

这是一个答案,以防它帮助任何人基于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;
}

这与命令中的变量没有多大关系。这与命令没有做你认为它做的事情有关。要捕获外部命令的输出,您需要使用backticks、
qx()
运算符或。谢谢,如果没有变量,我不会有问题。我相信使用反引号,无论是否正确,都能解决我的问题。我确信Perl似乎有很多解决方案,这与命令中的变量没有多大关系。这与命令没有做你认为它做的事情有关。要捕获外部命令的输出,您需要使用backticks、
qx()
运算符或。谢谢,如果没有变量,我不会有问题。我相信使用反引号,无论是否正确,都能解决我的问题。我相信Perl似乎有很多解决方案。