Schrift
[thread]8486[/thread]

Angabe von Parametern beim Skriptaufruf: Getopt::Long (Seite 2)

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Duff
 2006-11-10 11:54
#71589 #71589
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Danke, aber dann bekomme ich gar kein Ergebnis.
Habe es so probiert:
Code: (dl )
1
2
3
4
5
6
sub ausgabe1 {
my @{$arrayRef}=@_;
foreach my $array (my @{$arrayRef} ) {
print "$array->[0]\n", "${$array}[1]\n";
}
}


Mit dem Aufruf von oben.
D'OH
Daniel
renee
 2006-11-10 12:32
#71590 #71590
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Benutze bitte Wiki:[tt]use strict[/tt] und use warnings. Das würde Dir bei Deinem Code einige Fehler und Warnungen ausspucken...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2006-11-10 12:38
#71591 #71591
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Quote
Benutze bitte Wiki: use strict und use warnings. Das würde Dir bei Deinem Code einige Fehler und Warnungen ausspucken...


Ja, das mache ich.

Probiere sämtliche Sachen aus, es funktioniert aber irgendwie einfach nicht.

Denke aber, dass der Aufruf einer Funktion zum Ausgeben, so aussehen muss:
Code: (dl )
1
2
3
4
5
6
if($param2) {
ausgabe2($arrayRef);
}
else {
ausgabe1($arrayRef);
}


Ist dass den wenigstens schon mal richtig?
D'OH
Daniel
renee
 2006-11-10 12:55
#71592 #71592
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja... Wenn Du die Funktion so aufrufst:
Code: (dl )
ausgabe1($arrayRef);
,

dann muss die Funktion so aussehen:
Code: (dl )
1
2
3
4
5
6
sub ausgabe1 {
my ($arrayref) = @_;
foreach my $element (@$arrayref ) {
print $element->[0],"\n", $element->[1],"\n";
}
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2006-11-10 14:17
#71593 #71593
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Super, danke. So funktioniert es.

Aber wieso?

Also wenn ich mir $arrayRef ausgeben lasse, bekomme ich richtigerweise auch die Referenz, nämlich die Speicheraddresse mit Bezeichnung ARRAY.

Nur in der Funktion setzte ich my ($arrayRef)=@_;, was als Wert die Referenz ARRAY(0x80000001002fd4f0) zurück liefert.

Die Zeilen zum Ausgeben sind ja diese hier:
Code: (dl )
1
2
3
foreach my $array ( @{$arrayRef} ) {
print "$array->[0]\n", "${$array}[1]\n\n";
}


1 . $array ist ein Skalar oder eine Referenz auf ein array?
2. @{$arrayRef} ist ja ein Array und eigentlich nichts anderes als @arrayRef (schreibweise). Aber ist es ein Array mit Elementen, wobei wieder jedes Element eine Referenz auf ein weiteres Array ist.
3. Die ausgabe $array->[0] oder [1] greift dann auf das erste bzw. zweite Element des Arrays zu.

Sorry wenn ich nochmal nachfragen muss, aber bin mir noch immer nicht so ganz sicher, ob ich es richtig verstanden habe.
D'OH
Daniel
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2006-11-09 17:31.