배열로 수행 할 연산 집합을 시도하고 있습니다. 이를 위해 서브 루틴 참조를 전달해야합니다. 배열을 사용하지 않고이 작업을 수행 할 수있는 다른 방법이있을 수 있지만 다른 특정 제한 조건으로 인해 이것이 현재로서는 최선이라고 생각합니다.Perl이 서브 루틴 참조로 내장 함수로 구현되었습니다.
Tested
Undefined subroutine &main::shift called at temp2.pl line 22.
쿼리 - 그것은 참고로 서브 루틴에 내장 통과 할 수 있나요 : 내가 뭘하려고 오전에
기본 샘플 코드 :
#!/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;
출력 관찰은?
이미 이전 검색어가 있는데, here에 서브 루틴 참조로 내장 된 기능이 내장되어 있습니다.
질문에 대해 3 년 동안 더 궁금한 점이 있었지만 지금은 대안이 있는지 궁금해하고있었습니다. 이 시나리오에서 기본 제공 함수와 사용자 정의 하위 루틴이 구분되는 이유를 설명하는 사람이 있습니까?
은'보이는 $$ 밖으로 = $ FUNC -> ($ _)' – ysth
덕분에 업데이트 ... ysth 따라 – Sid