0

我编写了一个脚本,需要在运行之间存储一个小字符串。我可以使用哪个 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

我不需要对文件进行任何解析,只需要存储。有很多不同的操作系统和地方可以存储这些文件,这就是为什么我不想自己做那部分。

4

4 回答 4

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);
于 2012-12-28T12:59:46.130 回答
0

可能这可以帮助你 - http://www.stonehenge.com/merlyn/UnixReview/col53.html。但我认为你不能避免使用文件和目录。

于 2012-12-28T14:33:23.237 回答
0

如果它只是一个字符串(例如,'abcd1234'),只需使用普通文件并使用open.

如果您正在寻找更高级的东西,请查看Config::SimpleJSON::XS。Conifg::Simple 有自己的函数来写入文件,而 JSON 可以只使用普通的open.

于 2012-12-28T12:52:10.447 回答
0

我知道如何做到这一点(而不是手动滚动)的最简单方法是使用DBM::Deep

每次我发布有关此模块的帖子时,我都会收到讨厌的帖子回应它太慢了,所以请不要这样做。

于 2012-12-29T17:24:26.133 回答