Warum sollte
foo angemeckert werden? Er nennt sie doch
mypush ;o)) SCNR
ist die Deklaration für mypush(), also die reine Bekanntgabe. Das braucht es, wenn der eigentliche "Main"-Teil des Skriptes vor der Definition der Sub steht. Tut es das nicht, meldet Perl:
Quotemain::mypush() called too early to check prototype at prototype.pl line 9.
Can't use string ("1") as an ARRAY ref while "strict refs" in use at prototype.pl line 16.
Erst wenn Du die Definition der Sub *vor* das Main-Skript stellst, kannst Du Dir die explzite Deklaration vorher sparen:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
# Deklaration + Definition
sub mypush(\@$){
my ($ar,$scalar) = @_;
push @$ar, "Hinzugefuegt: $scalar";
}
my @array = (1..7);
mypush( @array, "Hallo");
print Dumper \@array;
Das ist eigentlich das Verhalten, dass ich noch aus meinen C-Anlern-Zeiten und den entsprechenden Programmcodes kenne.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!