Bu kod:Bu prototipli Perl alt yordamına coderef iletirken neden bir sözdizimi hatası alıyorum?
sub function($&) {
my $param1 = shift;
my $code = shift;
# do something with $param1 and $code
}
Bunu şöyle çağırırsam:
function("whatever") {
print "i'm inside the coderef\n";
}
Not enough arguments for MyPackage::function at x.pl line 5, near ""whatever" { "
olsun. Kod bloğunun önüne sub
eklemeden nasıl arayabilirim?
İlk argüman olduğunda neden çalışmıyor? – Geo
@Geo, işe yarayabilir, ancak daha açık olmanız gerekir: 'function (" ne olursa olsun ", alt {print" coderef içerisindeyim \ n "});' 'ismi BLOCK EXPR '' sözdizimi yalnızca çalışırsa çalışır coderef önce gelir. – friedo
Sadece bu şekilde tasarlandığından. İlk etapta, kullanıcıların, harita ve grep gibi küçük bir kod parçacığını alan yerleşik işlevler gibi çağrılabilen altprogramlar yazmasına izin vermenin ana nedeninden şüpheleniyorum, ancak daha esnek bir şey muhtemelen hızlı bir şekilde kafa karıştırıcı olabilir. – Sean