anzahl der werte eines mehrdimensionalen hashes feststellen
|
Seitenanfang |
| hi habe hier folgendens $haus{tiere}->[0] = "katze"; $haus{tiere}->[1] = "hund"; und so weiter ..... wie kann ich nun feststellen wieviele werte $haus{tiere} enthaelt ? holger
Datum: 12.01.2009-17:36

|
re: anzahl der werte eines mehrdimensionalen hashes feststellen
|
Seitenanfang |
Das hat mit Dereferenzieren zu tun:# umständlich: my @tiere = @{ $haus{tiere} }; print scalar @tiere; # in einem: print scalar @{ $hash{tiere} }; Mehr zum Thema Referenzen: http://wiki.perl-community.de/bin/view/Perldoc/perlreftut
Datum: 12.01.2009-18:03

|
re: anzahl der werte eines mehrdimensionalen hashes feststellen
|
Seitenanfang |
| hi danke das ist genau das was ich gesucht habe. holger
Datum: 13.01.2009-13:27

|
re: anzahl der werte eines mehrdimensionalen hashes feststellen
|
Seitenanfang |
| so jetzt ham wa den salat ..... ;) hintergrund: ich bau gerade wieder aich meiner routine mit der ich eine externes cfg file einlese und via einen hash %cfg dem programm zuverfuegung stelle. ( falls interesse am forhanden bitte melden ) nun will ich das ganze so erweitern das , mit komma getrennt , mehrere eintraege fuer ein wert zugewiesen wird. das klappt auch wunderbar incl dem festellen wieviele werte , wie oben angefragt , vorhanden sind. nun das problem . wie kann ich feststellen ob %cfg{'ip'}=192.168.1.1 ; %cfg{'ip} einen eintrag hat oder %cfg{'ip'}->[0]=192.168.1.1; %cfg{'ip'}->[1]=192.168.1.1; sprich %cfg{'ip'} ein mehrdimensionales array ist ? habe jetzt schon viel gegoogled aber die meisten hinweise kammen immer in bezug auf ein @array holger
Datum: 15.01.2009-10:44

|
re: anzahl der werte eines mehrdimensionalen hashes feststellen
|
Seitenanfang |
bitte benutze "strict" und "warnings";
#!/usr/bin/perluse strict; use warnings;
denn
%cfg{'ip'}=192.168.1.1 ;
ist von der Syntax her falsch, auf den gesamten Hash oder einen Hashslice greift man durch %cfg bzw. %cfg{"key1", "key2", "key3"} zu, auf ein einzelnes Element durch $cfg{"key"}. (btw: die IP-Adresse muss in Anfuehrungszeichen ;) )Was sich hinter einer Referenz verbirgt bekommt man ueber ref() heraus
my $ref_type = ref($cfg{'ip'});if($ref_type eq "ARRAY") { # dereferenzieren durch @{ $cfg{'ip'} } } elsif($ref_type eq "SCALAR") { # nicht dereferenzieren }
Datum: 15.01.2009-13:41

|
re: anzahl der werte eines mehrdimensionalen hashes feststellen
|
Seitenanfang |
hi mir ist klar das das mit warnings etc und das der syntax nicht richtig ist ...... jedoch wollte ich nur verdeutlichen worum es geht nicht im detail den code wieder geben ....... aber das mit dem rev() ist vermutlich genau das was ich suche.holger
Datum: 15.01.2009-14:00

|
re: anzahl der werte eines mehrdimensionalen hashes feststellen
|
Seitenanfang |
Man kann es aber auch verdeutlichen in dem man syntaktisch korrekten Code schreibt. Was will man tun... wenn regelmaeszig Boardbeitraege eintreffen mit dem Betreff "Script funktioniert nicht" und dann der Quelltext nur in Pseudocode oder fluechtig geschriebenen Code angegeben wird. Dann steht oft da, hab den Beispielcode eins-zu-eins per Copy&Paste uebernommen, dann stellt sich heraus dass doch eine Zeile angepasst wurde wodurch das Programm nicht funktioniert. Wir suchen uns dann den Wolf.Wir nehmen uns schon die Zeit zu helfen, also sollte der der die Hilfe benoetigt auch Zeit haben uns genuegend und vorallem korrekte Informationen zu liefern. just my 50 cent
Datum: 15.01.2009-21:01

|
re: anzahl der werte eines mehrdimensionalen hashes feststellen
|
Seitenanfang |
| hi das kann ich nachvollziehen in sofern wenn ich , ein problem mit code habe. jedoch suchte ich eine funktion , und um zu verdeutlichen habe ich einfach schematisch dargestellt was ich brauche. aber grundsaetzlich gebe ich dir natuerlich recht. holger
Datum: 16.01.2009-09:04

|