- ベストアンサー
DBM::Deepでの配列がうまく動作しない
- DBM::Deepを使って配列を使おうとしていますが、正常に動作しません。
- ループ処理がうまく行かず、値を列挙できません。
- DBM::Deepの使い方に何か間違いがあるのかもしれません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
連投すみません。 "自身"って...ほんと自信なくします。 あと、質問者さんのスクリプトはこちらではうまく動きました。 よって原因不明です。よく見もせずにすみませんでした。 ただ、インスタンスを捨ててしまっているので、データは保存されないのではないでしょうか?
その他の回答 (1)
- g_p_
- ベストアンサー率53% (28/52)
こんにちは、 的を得ている自身はありませんが、 >tie @array, "DBM::Deep", "bar.db" ; # ★3 もしかして、インスタンスを捨ててしまっているからではないですか? 以下実験です。 #! perl use strict; use warnings; use DBM::Deep; use Data::Dumper; # my @array; my $db = tie @array, 'DBM::Deep', 'foo.db'; @array=( [ "123" , "abc" ], [ "456" , "def" ], ); print Dumper $_ for @array; undef $db; # my $db2 = DBM::Deep->new( file => 'foo.db', type => DBM::Deep->TYPE_ARRAY ); print Dumper $_ for @$db2; --- 実行結果 --- D:\>perl test.pl $VAR1 = bless( [ '123', 'abc' ], 'DBM::Deep::Array' ); $VAR1 = bless( [ '456', 'def' ], 'DBM::Deep::Array' ); $VAR1 = bless( [ '123', 'abc' ], 'DBM::Deep::Array' ); $VAR1 = bless( [ '456', 'def' ], 'DBM::Deep::Array' );
補足
すぐにお返事出来なくて申し訳ありませんでした。 いろいろ試してみたのですが、原因不明でした・・・ 調べている過程でStoreableというのを知りまして どうやらこちらの方が使いやすそうだったのでDBM::deepの使用はやめることにしました。 ご回答ありがとうございました。感謝です!