0

MLDBM を使用して一部の Perl データ構造を永続化していますが、次の代替手段があるかどうか疑問に思っています。

tie %hash, "MLDBM", $dbm_file, O_CREAT | O_RDWR, 0644;

主に、既知のファイル名ではなく、STDOUT を使用できるようにしたいと考えています。これは、シェル側のファイルにリダイレクトできます。

「tie」、「DBM」、「filehandle」などのキーワードで検索してきましたが、ファイルハンドルとファイルハンドルの関係ではなく、ファイルハンドルとファイルハンドルの関係がヒットする傾向があります。

助言がありますか?

4

2 に答える 2

3

まあ、MLDBMはパラメータを基礎となる dbm ライブラリ (例えば、DB_FileGDBM_File ) に渡すだけなので気にしません。しかし、ファイル名の代わりにファイルハンドルを受け入れる dbm ライブラリは知りません。また、dbm ファイルはシーク可能である必要があるため、シェルはパイプではなく実際のファイルにリダイレクトする必要があります。また、STDOUT はおそらく書き込み専用で開かれ、dbm ファイルでは機能しません。

データベースがメモリに対して大きすぎるためではなく、永続性のために MLDBM を使用しているだけの場合は、別のアプローチを試すことができます。Storableを使用してデータ構造を永続化します。すでに開いているファイルハンドルを読み書きできます。

于 2010-06-12T18:51:22.213 に答える
2

STDOUTこれはストリームであり、テープのように順番に読み取らなければならない一連のバイトであることを思い出してください。DBM モジュールは、任意のレコードを読み書きできるレコード指向の永続性を提供します。

DBM を偽装するSTDOUTには、何らかのジャーナル形式を出力する必要があります。DBM を使用するよりも書き込みのSTDOUT方が優先されるようですので、別の形式の方が適しているかもしれません。

アプリケーションに関する詳細情報があれば、より役立つ提案を提供できます。

于 2010-06-12T18:51:20.903 に答える