私はリストを返す関数をperlに持っています。 fooは()のコピーをリストに割り当てられているというのが私の理解がなされている。perlは、コピーを作成せずに関数から返された一時リストを参照しますか?
sub foo() { return `ping 127.0.0.1` }
my @list = foo();
@list
が、その後@oldlist = @list;
のように別のリストに転送すると、別のコピーが作成される必要があること。だから私はmy $listref = \foo();
のような返されたリストから参照を作成し、その参照を割り当てることはできますが、それは機能しません。
私が扱っている関数はかなり大きなリストを返すコマンドを実行します(pingコマンドは単なる例のためです)。私はできるだけコピーを最小限に抑えたいので、できるだけコピーしています。それに対処する良い方法は何ですか?
リストを返すコマンドから配列refを返す方法がわかりません。 'return [\' ping 1.2.3.4 \ '];' – newguy
@newguyはい、そうするのが良い方法でしょう。もう1つは、配列の変数(例えば '@ ary')にコマンドの戻り値を格納することです - もしそれがsubのどこかで必要なら' return \ @ary; ' – zdim
ありがとう。 – newguy