PHP exec无法识别PHP哈希

时间:2016-12-23 09:37:27

标签: php perl hash

我在我的Perl文件中生成一个哈希,当我运行脚本表单控件时,一切都很好。如果我通过PHP运行相同的脚本,我的哈希似乎是空的。

在PHP中:

exec("perl perl/test.pl", $output);
print_r($output);

在我的Perl文件中:

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

my $filename = 'test.txt';
open(my $fh, '<:encoding(UTF-8)', $filename);

my %tc;

while (my $row = <$fh>) {
    chomp $row;

    if ($row =~ /someregex/) {
        $tc{$1} = $2;
    }

}

my $size = keys %tc;
print $size;

print Dumper(\%tc);

当我在控制台中运行它时,它使用此代码片段的大小为1,并且转储器显示正确的内容。当我在PHP中打印它时,它的大小为0并返回一个空数组。

PHP确实运行Perl脚本,好像我只返回一些简单的数据,PHP显示它。

我很感激每一个有帮助的答案。谢谢!

1 个答案:

答案 0 :(得分:1)

要使用脚本的目录而不是当前的工作目录来解析相对路径,请更改

my $filename = 'test.txt';

use FindBin qw( $RealBin );

my $filename = "$RealBin/test.txt";