PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : perl: Array an Funktion übergeben?



jean_luc_picard
07-08-2005, 12:57
Hallo Leute,

ich möchte in einem Perl-Skript ein Array an eine Funktion übergeben. Leider wird von der Funktion das Übergabeelement anscheinend als String interpretiert...



#!/usr/bin/perl -w

sub arrayprint;
my @mainarray=("string 1","string 2","string 3");
&arrayprint(\@mainarray);

sub arrayprint
{
my @subarray=$_[0];
foreach my $string (@subarray)
{
print "$string\n";
}
}


Von der Funktion wird immer nur die Arraybezeichnung (z.B. "ARRAY(0x81878f4)") ausgegeben.
Es ist natürlich möglich statt des Arrays die Arrayelemente zu übergeben. Diese wären dann ja im Array @_ wiederzufinden. Wenn man nun aber mehrere Array's übergeben will...?

Gruß, Picard

DaTa
07-08-2005, 13:46
&arrayprint(\@mainarray);


Hier uebergibst du eine Referenz auf ein Array.




my @subarray=$_[0];


Diese Referenz steht nun im ersten element des Arrays @subarray

Die willst wohl eher


my @subarray=@$_[0];


Siehe perldoc perlref

jean_luc_picard
09-08-2005, 19:00
Hallo DaTa,

danke für Deinen Tip, auch den mit der perldoc ;). Leider hat das aber so doch noch nicht funktioniert. Man muss das Ganze anscheinend noch in geschweifte Klammern fassen. Ich habe das nochmal zusammengefasst:



#!/usr/bin/perl -w

sub arrayprint;
my @mainarray=("string 1","string 2","string 3");
&arrayprint(\@mainarray);

sub arrayprint
{
my @subarray=@{$_[0]};
foreach my $string (@subarray)
{
print "$string\n";
}
}


Gruß + Dank, Picard