4

次のコード (ほとんどは Memoize のホームページから) は、0 バイトのファイルを作成し、その後 perl が終了コード -1073741819 でクラッシュします。これを ActivePerl 5.10 と最新の 5.16 バージョンでテストしました。

use Memoize;
use Memoize::Storable;

sub ttt { return 44; }
tie my %cache => 'Memoize::Storable', 'ttt.store';
memoize 'ttt', SCALAR_CACHE => [HASH => \%cache];

これは、Win XP の 2 台の差分コンピュータで発生します。何か案は?

4

1 に答える 1

4

unmemoize情報がファイルに保存されるように、呼び出しが終了したらサブルーチンを明示的に実行する必要があります。

use strict;
use warnings;

use Memoize qw/ memoize  unmemoize /;
use Memoize::Storable;

sub ttt { 44 }

tie my %cache => 'Memoize::Storable', 'ttt.store';

memoize 'ttt', SCALAR_CACHE => [HASH => \%cache];

ttt($_) for 1..10;

unmemoize 'ttt';
于 2013-06-24T12:36:47.657 に答える