我在我的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显示它。
我很感激每一个有帮助的答案。谢谢!
答案 0 :(得分:1)
要使用脚本的目录而不是当前的工作目录来解析相对路径,请更改
my $filename = 'test.txt';
到
use FindBin qw( $RealBin );
my $filename = "$RealBin/test.txt";