В этой строке:
myPush(@planets,"Test");
Perl еще не видел прототип, поэтому он не может его применить.(Если вы включите предупреждения, которые вы всегда должны делать, вы получите сообщение main::myPush() called too early to check prototype
.)
Вы можете создать подпрограмму до того, как вы ее используете:
sub myPush (\@@) {
my $ref = shift;
my @bal = @_;
print "\@bal : @bal\nRef : @{$ref}\n";
#...
}
@planets = ('mercury', 'venus', 'earth', 'mars');
myPush(@planets,"Test");
или, по крайней мере, предварительно объявите его с его прототипом:
sub myPush (\@@);
@planets = ('mercury', 'venus', 'earth', 'mars');
myPush(@planets,"Test");
sub myPush (\@@) {
my $ref = shift;
my @bal = @_;
print "\@bal : @bal\nRef : @{$ref}\n";
#...
}