Alt yordam adının sonuna ()
kodunu koyarak, size bir prototip veriyorsunuz. Bir prototip, Perl'e altprograma ileteceğiniz argümanların sayısı ve türleri hakkında ipuçları verir. Detaylar için bakınız this section in perlsub.
Özellikle, ()
, bu alt yordamın hiçbir argüman almadığını Perl'e söyleyen boş prototiptir ve bu alt yordamı argümanlarla çağırırsanız Perl bir derleme hatası atar. Bundan
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
sub foo {
say 'In foo';
}
sub bar() {
say 'In bar';
}
foo();
bar();
foo(1);
bar(1);
çıkışı:
Too many arguments for main::bar at ./foobar line 18, near "1)"
Execution of ./foobar aborted due to compilation errors.
Bu hataya neden bar()
bu son çağrı (1 argümanla bir) var İşte bir örnek. Perl'in prototiplerin uygulanmasının genellikle insanların sıklıkla düşündükleri ve birkaç özel durumun dışında çoğu Perl uzmanının bunları önleyeceği kadar yararlı olmadığı dikkate alınmalıdır. Ben de aynısını yapmanı öneririm. Perl v5.22'den itibaren, deneysel "imzalar" özelliği, diğer dillerden gelen programcıların prototiplerden beklediği pek çok hedefe ulaşmayı umuyor.
İlki, işlevin argüman almadığını söyleyen bir prototiptir; İkincisi bir prototip değildir ve argümanlar hakkında hiçbir şey söylemez. İkinci formu kullan. [Perl'deki prototipler hakkında bilmek istediğinizden çok daha fazlası] (http://www.perlmonks.org/?node_id=861966). –
'5.20' * deneysel * fonksiyon imzaları da parens kullanmaktadır, http://www.effectiveperlprogramming.com/2015/04/use-v5-20-subroutine-signatures/ –