-2

我有用于生成的 Perl 代码存储在两个单独的.txt文件中,我想在测试我的模块时执行这些文件,但我似乎无法将它们读入测试。

我试过使用内置的文件阅读器:open FILE, 'file.txt'

storable:可存储文件retrieve('file')在哪里file

File::Slurpread_file('file.txt')

这些都不能在测试文件(.t格式)中工作,但它们确实在.pl同一目录中的普通文件中工作我怎样才能让它在测试中工作?我会使用该__DATA__选项,但我有两个文件,它们已经是哈希格式,所以可以直接读取。

编辑:我的代码 -

use Data::Dumper;
use File::Slurp;

my $table1 = read_file('tab1.txt');
my $table2 = read_file('tab2.txt');
print Dumper($table1);
print Dumper($table2);

我在测试文件中的输出:

$VAR1 = '';
$VAR1 = '';

test.pl文件$VAR1$VAR2的内容完全一样,正如我所期望的那样。

编辑2:

忘记文件中有散列,没关系,我尝试读取test.txt我用随机字符串制作的文件,结果如下:

$VAR1 = 'Testing commit - part 12';

这似乎表明它正在读取位于不同位置的文件,因此找不到我的文件。我尝试将目录包括在内,lib但没有奏效。

4

1 回答 1

0

您正在尝试执行 Perl 代码。我猜代码不是模块(不使用package),所以你会使用do而不是use/ require

现在剩下的就是定位相对于脚本位置的文件了。为此,有$FindBin::RealBin.

use FindBin qw( $RealBin );
use lib "$RealBin/..";

our $VAR1;
do("file.txt")
   or die "Error executing file.txt: $@";

... $VAR1 ...

确保从您的文件中返回一个真值(1;例如,以 结尾)。

于 2013-04-24T09:24:11.133 回答