perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 24
Click for quality!




11.02.2012 / 12:11

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitraganzahl 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: anzahl der werte eines mehrdimensionalen hashes feststellen
Seitenanfang
bitte benutze "strict" und "warnings";

#!/usr/bin/perl

use 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

Beitragre: 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

Beitragre: 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

Beitragre: 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

-






-
-