Değerlere göre iki liste iletirseniz, @_
numaralı telefondan büyük bir liste alırsınız.
:
1 2 3 5 6 7
<blank line>
başvuruyla onları geçmek gerekirdi iki dizileri geçmesi için: Bu baskı sona erecek
#!/usr/bin/perl
sub test
{
my (@a, @b) = @_;
print "@a\n";
print "@b\n";
}
my @array1 = (1,2,3);
my @array2 = (5,6,7);
test(@array1, @array2);
:
my(@list1,@list2) = @_;
herhangi bir anlam ifade etmez
test(\@array1, \@array2);
Ve altınızda bunları referans olarak görmeniz gerekir:
sub test
{
my ($arrayRef1, $arrayRef2) = @_;
print "@$arrayRef1\n";
print "@$arrayRef2\n";
}
Bu, prototipin, kullanıcının liste argümanlarını geçmek için özel bir şey yapmasını gerektirmediğinden daha iyi bir çözüm olduğu anlaşılıyor. teşekkürler – Mike
@Mike, Tecrübeli bir perl programcısının referansı geçme zorunluluğundan daha çok şaşıracaklarından dolayı prototiplere karşı öneride bulunacağım. Prototiplerin neden çatlatıldığına dair daha fazla bilgi için http://stackoverflow.com/questions/297034/why-are-perl-function-prototypes-bad adresine bakın. – daotoad
@Mike, prototipleri sıklıkla kullandığım prototip belirtiminde hata yaptığımı sık sık kullanıyorum. Bu yüzden kod örneğimi denediyseniz ve işe yaramadıysa, prototipteki değişikliği not edin. – daotoad