perl - Arrayabfragen wollen nicht funktionieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 07.11.2006 14:43:35

Wow, danke.
Dann habe ich ja doch was verstanden ;-)

nepos hat geschrieben: Innerhalb von popmany() sieht @_ so aus: :

Code: Alles auswählen

[[1,2,3],[4,5,6],[7,8],[9,10]]
Du meinst also das hier:

Code: Alles auswählen

@tailings = popmany ( \@a, \@b, \@c, \@d ); 
entspricht also dann dem hier (sinngemäß):

Code: Alles auswählen

@tailings = popmany ([[1,2,3],[4,5,6],[7,8],[9,10]])
Oh, yeah!

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 07.11.2006 15:02:37

Duff hat geschrieben:

Code: Alles auswählen

@tailings = popmany ( \@a, \@b, \@c, \@d ); 
entspricht also dann dem hier (sinngemäß):

Code: Alles auswählen

@tailings = popmany ([[1,2,3],[4,5,6],[7,8],[9,10]])
Nicht ganz. Lass die aeusseren eckigen Klammern weg, dann passt es. Mittesl [ ] bildest du in Perl eine Referenz auf einen Array ohne Namen:

Code: Alles auswählen

my $aref = [1,2,3];
Das ganze geht auch mit Hashes:

Code: Alles auswählen

my $href = { key => 'value' };
Die umgebenden Klammern kamen bei mir durch die Ausgabe mit Data::Dumper rein. Dieses Modul mit seiner Funktion Dumper ist uebrigens sehr praktisch, wenn du verschachtelte Strukturen wie z.B. sowas hast:

Code: Alles auswählen

my $aref = [ { name => 'Test', wert => 'blafasel'}, {name => 'Test2', wert => 'foobar'}, { name =>'Array', wert=> [1 .. 10]} ];
print Dumper($aref);

$VAR1 = [
          {
            'wert' => 'blafasel',
            'name' => 'Test'
          },
          {
            'wert' => 'foobar',
            'name' => 'Test2'
          },
          {
            'wert' => [
                        1,
                        2,
                        3,
                        4,
                        5,
                        6,
                        7,
                        8,
                        9,
                        10
                      ],
            'name' => 'Array'
          }
        ];
$aref ist eine Referenz auf einen Array, der nun verschiedene Hashes enthaelt. Diese Hashes haben alle eine Feld name und ein Feld wert wobei beim 3. Hash der Wert wieder eine Arrayreferenz auf einen Array mit den Zahlen von 1-10 ist.

Wenn dich der ganze Spass mit Referenzen und Co naeher interessiert,

Code: Alles auswählen

perldoc perlref
waere die entsprechende Manpage zu diesem Thema.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 07.11.2006 18:29:51

Nochmals ein Dankeschön für die lange und ausführliche Erklärung.

Denke (hoffe ;-)), dass ich es nun verstanden habe. Habe mir dazu auch noch mal diesen Artikel dazu durchgelesen.
Oh, yeah!

Antworten