[Vienna-pm] Hash-Frage von extern

Thomas Klausner domm at zsi.at
Tue Sep 28 05:51:27 CDT 2004


Hi!

On Tue, Sep 28, 2004 at 12:23:44PM +0200, Carl A. Schreiber wrote:

> Am Dienstag, 28. September 2004 12:07 schrieb Thomas Klausner:
> > On Tue, Sep 28, 2004 at 11:44:15AM +0200, Carl A. Schreiber wrote:
> > > Was hei?? hier:
> > > 	%hash->{$a}{$b} += $eintrag->{DATA1};
> > > ist das gleich:
> > > 	$hash{$a}{$b}{DATA1} = $eintrag{DATA1};
> > > Wird also dem hash %hash ein neues Element (key=>value) hinzugef??gt?
> >
> > Nein.
> >
> > += addiert zu dem Ding auf der linken Seite das Ding auf der rechten.
> >
> > d.h. was auch immer sich hinter $hash{$a}{$b} versteckt ist nachher der
> > alte Wert von $hash{$a}{$b} PLUS $eintrag{DATA1}.
> 
> Das w?rde ja bedeuten, dass
> 	%hash->{$a}->{$b} += $eintrag{DATA1}
> 	(Zusatzfrage: was bedeutete %hash{$a}{$b} ?)
> gleich
> 	$hash->{$a}->{$b} += $eintrag{DATA1}
> 	(das ist ja eindeutig)
> ist? Warum dann %hash-> ..
> Ich dachte das waere eine Slice-Version f?r hashes 
> 	(aehnlich Arrays: @arr[0,1,2,3])
> 
> Gibt's das ?berhaupt?

Moment:

%hash            ... ein Hash
$hash{key}       ... ein Wert dieses Hashes

$hashref         ... eine Referenz auf einen Hash
$hashref->{key}  ... ein Wert dieser Hashref

Bei verschachtelten Datenstrukturen (Hash of Hashes, o.ae.) konnen die
Pfeile zwischen den Ebenen weggelassen werden.

$hashref->{$a}{b}
ist dasselbe wie
$hashref->{$a}->{$b}
(nur kuerzer :-)

Hash-Slices hab ich noch nie verwendet, aber anscheinend (perldoc perldata)
verwenden Hash-Slices ein @ als Sigil:

@colors{'red','blue','green'}=(0xff0000, 0x0000ff, 0x00ff00);

Oder reden wir irgendwie aneinander vorbei?



-- 
#!/usr/bin/perl                               http://domm.zsi.at
for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/}


More information about the Vienna-pm mailing list