我编写了一个脚本,需要在两次运行之间存储一个小字符串。我可以使用哪个CPAN模块使过程尽可能简单?理想情况下,我想要像:
use That::Module;
my $static_data = read_config( 'script-name' ); # read from e.g. ~/.script-name.data
$static_data++;
write_config( 'script-name', $static_data ); # write to e.g. ~/.script-name.data
我不需要解析文件,只需要存储。有很多不同的操作系统和地方可以存储这些文件,这就是为什么我不想自己做这个部分。
答案 0 :(得分:1)
只需将Storable用于Perl数据结构的可移植持久性,并File::HomeDir用于便携式“常规配置位置”查找:
use File::HomeDir;
use FindBin qw($Script);
use Storable qw(nstore);
# Generate absolute path like:
# /home/stas/.local/share/script.pl.data
my $file = File::Spec->catfile(File::HomeDir->my_data(), "$Script.data");
# Network order for better endianess compatibility
nstore \%table, $file;
$hashref = retrieve($file);
答案 1 :(得分:0)
如果它只是一个字符串(例如,'abcd1234'),只需使用普通文件并使用open
写入。
如果您正在寻找更高级的内容,请查看Config::Simple或JSON::XS。 Conifg :: Simple有自己的函数来写出文件,而JSON只能使用普通的open
。
答案 2 :(得分:0)
可能这可以帮到你 - http://www.stonehenge.com/merlyn/UnixReview/col53.html。但我认为你无法避免使用文件和目录。
答案 3 :(得分:0)
我知道如何执行此操作(而不是手动滚动)的最简单方法是使用DBM::Deep。
每次我发布关于这个模块的帖子都会让我觉得很讨厌,因为它太慢了,所以请不要这样做。