无法在文件中读取perl模块测试?

时间:2013-04-24 08:44:03

标签: perl testing readfile

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

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

storableretrieve('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与“.txt”文件的内容完全相同,正如我所料。

EDIT2:

忘记文件中有哈希值,这没关系,我试着用test.txt文件读取我用随机字符串写的文件,它出现了:

$VAR1 = 'Testing commit - part 12';

这似乎表明它正在读取位于不同位置的文件,因此找不到我的文件。我尝试将目录包含为lib但不起作用。

1 个答案:

答案 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;结尾)。