Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Perl/CGI » Komplexe Datentypen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.02.2009, 22:12 Uhr
Dirk1980



Hallo zusammen,

inzwischen habe ich das mit den komplexen Datentypen ganz gut verstanden. Allerdings macht mir die Schreibweise ohne Pfeiloperator noch Probleme.

Hier ein Beispiel:


Perl:

#!/usr/bin/perl
use strict;
use warnings;


my %Anja;

my %Person =
( Name => 'Max',
  Alter => 44,  
  Kinder =>      
  [ { Name =>'Peter',
      Alter => 15
    },
    { Name => 'Anja',
      Alter => 9
    },
  ],
);

# Alter von Anja

# Variante 1
print "Alter von Anja: " . @{$Person{'Kinder'}}[1]->{'Alter'}; #funktioniert

# Variante 2
%Anja = %{@{$Person{'Kinder'}}[1]};
print "Alter von Anja: " . $Anja{'Alter'}; # funktioniert

# Variante 3
print %{@{$Person{'Kinder'}}[1]}{'Alter'}; # funktioniert NICHT - Warum???



Variante 1 und 2 funktionieren. Variante 3 nicht. Warum funktioniert Variante 3 nicht. Ich habe ein Hash bestimmt und möchte mit dem key 'Alter' den Wert erhalten. Wie kann ich das Alter von Anja bestimmen, wenn ich nicht den Pfeiloperator wie in Variante 1 und nicht den Umweg über eine Hashkopie wie in Variante 2 nehmen möchte.

Meine Lösung ist Variante 3, aber diese scheitert leider.

Vielen Dank für Eure Vorschläge
Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.02.2009, 14:37 Uhr
Dirk1980



Hier noch eine einfachere Variante:


Perl:

#!/usr/bin/perl
use strict;
use warnings;

my %Person =
( Name => 'Max',
  Alter => 44,  
  Kinder =>      
  [ { Name =>'Peter',
      Alter => 15
    },
    { Name => 'Anja',
      Alter => 9
    },
  ],
);


print "Alter von Anja: " . $Person{'Kinder'}[1]{'Alter'} . "\n";




Gruß
Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.02.2009, 17:10 Uhr
0xdeadbeef
Gott
(Operator)


Was du dir in Variante 3 holst, ist kein Hash, dementsprechend:

Code:
# Variante 3
print ${@{$Person{'Kinder'}}[1]}{'Alter'} . "\n";
#     ^
#     |


Im Übrigen ließe sich das ganze auch als

Code:
print "Alter von Anja: " . $Person{Kinder}[1]{Alter} . "\n";


schreiben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 27.02.2009 um 17:14 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Perl/CGI ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: