我有Perl代码生成一个存储在两个单独的.txt
文件中,我想在测试我的模块时执行,但我似乎无法将它们读入测试。
我尝试使用内置文件阅读器:open FILE, 'file.txt'
,
storable
:retrieve('file')
其中file
是一个可存储的文件
和File::Slurp
:read_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
与“.txt”文件的内容完全相同,正如我所料。
EDIT2:
忘记文件中有哈希值,这没关系,我试着用test.txt
文件读取我用随机字符串写的文件,它出现了:
$VAR1 = 'Testing commit - part 12';
这似乎表明它正在读取位于不同位置的文件,因此找不到我的文件。我尝试将目录包含为lib
但不起作用。
答案 0 :(得分: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;
结尾)。