3

一連の操作を配列として実行しようとしています。このために、サブルーチン参照を渡す必要があります。(配列を使用せずにこれを実行する方法は他にもあるかもしれませんが、他の制約があるため、現時点ではこれが最適だと思います)。

私がやろうとしていることの基本的なサンプルコード:

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
sub test()
{
   print "Tested\n";
}

my $test;
my  @temp = (1, 2, 3);
my $operations = [ 
           [\&test, undef, undef],
           [\&shift, \$test, \@temp], 
           ];

foreach(@$operations){
   my $func = shift $_;
   my $out = shift $_;
   $$out = $func->(@$_);
}

print Dumper $test;

観測された出力は次のとおりです。

Tested
Undefined subroutine &main::shift called at temp2.pl line 22.

クエリ - 組み込みのサブルーチンを参照として渡すことはできますか?

以前のクエリは既にあります。reg 組み込み関数はサブルーチン参照としてhereにあります。

質問は約3年前に尋ねられたので、現在それに代わるものがあるかどうか疑問に思っていました. このシナリオで組み込み関数とユーザー定義のサブルーチンが区別される理由を誰かが説明してくれたら幸いです。

4

1 に答える 1

7

shiftサブではありません。andand と同じ演算子+です。サブへの参照が必要な場合は、サブを作成する必要があります。

[sub { shift(@{$_[0]}) }, \$test, \@temp],

関連している:

于 2013-03-01T08:22:36.487 に答える