【发布时间】:2019-06-11 02:30:11
【问题描述】:
我正在尝试创建一个哈希,该哈希从我服务器上的单独文本文件中提取其键/值对。
当我手动将键/值对输入到我的 perl 脚本中的散列中时,如下例所示,当我稍后调用它时,散列可以完美地工作:
# Initialize hash
my %format_key = ('SGBK', 'PRINT', 'SGDVD', 'VIDEO');
# Call hash (this is much later in the program)
$item_format = $format_key{$fields[2]};
当我将这些完全相同的参数保存到文本文件中,然后读入该文件,将内容保存到标量变量,并将该变量分配给散列中的参数时,散列不起作用。这是我所做的:
# Open file path saved in $format_key_file and save contents to $output
open(my $fh, '<', $format_key_file) or die "Could not read from $format_key_file, program halting."; {
local $/;
$output = <$fh>;
}
close($fh);
my %format_key = $output;
# Call hash (this is much later in the program)
$item_format = $format_key{$fields[2]};
我完全被难住了。我想我可以手动将所有哈希参数输入到脚本本身中,但是会有很多这些参数,我希望将它们保存在一个文件中,以便于以后更新。
【问题讨论】:
-
$output是一个包含所有文件的字符串(甚至包括换行符)。这不会让%format_key非常高兴,并且与您“手动”执行的操作不同。文件格式是什么? -
如果您可以选择以哪种格式将这些内容存储在文件中,请参阅@Grinnz 的回答以获取一些选项,其中最合理的选项在示例代码中提供。但是如果给出了文件,那么我上面的问题就是:该文件的格式是什么? (除非它是答案中的选项之一。)