我需要在一个文件中创建一个哈希表,并在另一个文件中使用。原因是该表是我的“数据库”并将被更改,我希望它与所有其他数据文件一起使用,而不是使用脚本文件。
如何在我的脚本中使用该表?
答案 0 :(得分:4)
在全局变量或包变量中定义哈希表。然后使用do
命令将定义加载到另一个脚本中:
datafiles/database.def
---------------------------
package ProjectData;
our %DATA = ('abc' => 'def', 'ghi' => 'jkl', ...);
scripts/myscript.pl
------------------------
use strict;
do 'datafiles/database.def';
... do something with %ProjectData::DATA ...
答案 1 :(得分:1)
有太多方法可以做到!
一个简单的方法是将数据写入文件CSV并使用Text :: CSV或Text :: CSV_XS加载。
<强>更新强>:
您还可以使用do
内置函数从另一个脚本中读取和执行perl文件。即:
do "config.pl";
或者使用允许复杂数据结构(XML,JSON,yaml,.ini等)的配置文件格式。
答案 2 :(得分:0)
也许您正在寻找tied hash。
答案 3 :(得分:0)
这可能不是最佳解决方案,但您可以使用Storable或Data::Dumper,这两者都是永远存在于核心中(分别为5.7.3和5.5)。
或者,您可以将它们放在另一个模块中并使用/ require,ala
package MyImportantHash;
use Exporter;
our @EXPORT = qw( %important_hash );
our %important_hash = (
some_key => 'some_value',
);
1;
在您的主要包裹中,
use MyImportantHash;
say "$_ => $important_hash{$_}" for sort keys %important_hash;
当然,这一切都假定您不希望在内存中更改哈希值以自动显示在文件中。如果你这样做,那就看看davorg的答案了。