Thread wie funktioniert der Befehl push() (7 answers)
Opened by #Kein Kommentar at 2007-10-11 15:17

Linuxer
 2007-10-11 22:22
#100703 #100703
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Warum sollte foo angemeckert werden? Er nennt sie doch mypush ;o)) SCNR

Code: (dl )
sub mypush(\@$);


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:

Quote
main::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:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/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!

View full thread wie funktioniert der Befehl push()