巨大な文字列をサブルートに転送することですが、は転送時のコピーを避けます。非常に大きな文字列を指している$ref
という参照があるとします。また、f($)
サブルーチンが1つの引数を受け入れるようにしましょう。 f
にこの文字列を転送しても問題はありません。Perl:巨大な文字列のリストをコピーせずにサブルーチンに転送する
f($$ref); # data pointed by $ref is not copied to temporary value here
は本当に私がのが@a
に割り当ててみましょう、単一の文字列が、それらのリストを持っていない:
my @a = ($ref_1, $ref_2, $ref_3, ...);
今、問題が解決されるだろう
f(map {$$_} @a);
しかしmap
によって0からすべての間接参照項目コピーを行いますをコピーし、コピーしたインスタンスをf
に転送します。
私はf
で実際にはCPANモジュールのメソッドなので、私はコントロールがありません。
タスクを解決することは可能ですか? 事前に感謝します。
'$ ref'が参照の場合は、' f($ ref) 'を呼び出すだけでいいですか?リストについては、 'f($ _)for @ a'を使うことができます。 – choroba
@indexless:これに 'XML :: LibXML'と関係がある場合は、そう言います。 – Zaid
@Zaid DBIモジュールには何かがあります。 - > execute()メソッドに値のリストを渡したいが、そのリストには挿入する値への参照が入っている。 – indexless