【发布时间】:2017-11-11 00:27:26
【问题描述】:
我有一个只读的 perl 文件,其中定义了一个巨大的哈希值。无论如何我可以阅读这个 perl 文件并转储散列内容吗?
这是文件中哈希的基本结构。
%hash_name = {
-files => [
'<some_path>',
],
-dirs => [
'<some_path>',
'<some_path>',
'<some_path>',
'<some_path>',
'<some_path>',
],
};
【问题讨论】:
-
你能不能不 cat 文件并将其重定向到一个有写权限的文件?
cat perl_file_name > new_perl_file_name -
是的,我确实考虑过,但只有在没有其他方法可以在不创建新文件的情况下转储哈希时才会采用这种方法。
-
@newbie 谢谢,并重复这个问题:这个文件有其他 Perl 代码还是只有这个哈希?此外,哈希是未声明的(只是
%hash_name),正如您所展示的那样,还是“词法”,所以my例如:my %hash_name? -
@newbie 你显示的在 Perl 中是无效的:
%hash_name中的%表示变量是 hash,但{ .. }形成 散列引用,它是一个标量变量(不是散列)。所以它应该是%hash_name = ( .. )或者它是$hashref_name = { .. } -
请注意,这是一种不安全的数据存储方式。数据文件必须作为 perl 代码进行评估。任何任意代码都可以在文件中。此外,数据文件只能由 Perl 程序读取。而是使用 JSON 或类似的数据格式。 JSON::MaybeXS 可以在 JSON 和 Perl 之间进行转换。
标签: perl data-dumper perl-hash