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

ファイルの解析は必要ありません。ストレージだけです。これらのファイルを保存するさまざまな OS や場所がたくさんあるので、私はその部分を自分でやりたくないのです。

4

4 に答える 4

1

Perl データ構造の移植可能な永続化にはStorableを使用し、移植可能な「一般的な構成場所」の検索には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

これを行う方法を知っている最も簡単な方法 (手でローリングするのではなく) は、DBM::Deepを使用することです。

このモジュールについて投稿するたびに、遅すぎるという反論の投稿が寄せられるので、そうしないでください。

于 2012-12-29T17:24:26.133 に答える
0

これが役立つかもしれません - http://www.stonehenge.com/merlyn/UnixReview/col53.html。しかし、ファイルやディレクトリを扱う作業は避けられないと思います。

于 2012-12-28T14:33:23.237 に答える
0

単一の文字列 (例: 'abcd1234') の場合は、通常のファイルを使用して、open.

もう少し高度なものを探している場合は、Config::SimpleまたはJSON::XSを見てください。Conifg::Simple にはファイルに書き出す独自の関数があり、JSON はプレーンなopen.

于 2012-12-28T12:52:10.447 に答える