【发布时间】:2013-04-24 08:44:02
【问题描述】:
我有用于生成 a 的 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,但这不起作用。
【问题讨论】:
-
“哈希”是一种数据结构,而不是一种文件格式。您不能将“哈希存储在文件中”。您的文件实际上包含什么?
-
说它在
.t中有效但在.pl中无效是错误的。你误诊了问题。这是另外一回事,因为 Perl 根本不考虑扩展。.pl、.pm、.t、.foo或根本没有扩展对 Perl 来说都是一样的。 -
我只是说我所看到的......在每个文件中,我都有一个哈希值,按照预期的方式写入哈希值
'name' = { 'key1' => 'val1' };格式(除非它更大)。如果这有所作为,它们就是哈希引用。当我从“test.pl”文件中的 read_in 打印时,我得到了书面输出的哈希值,但是当我在“test.t”文件中尝试相同的代码时,我得到了''。 -
请分享您的代码。
-
如果您提供用于读取“哈希”文件的代码,则更容易理解问题的根源。