linux-l: perl und hashes...

Jens Dreger jens.dreger at physik.fu-berlin.de
Di Mai 22 08:31:33 CEST 2001


On Tue, May 22, 2001 at 08:02:21AM +0200, Jens Dreger wrote:
> On Tue, May 22, 2001 at 07:56:17AM +0200, Ulrich Wiederhold wrote:
> > Hallo,
> > * Jens Dreger <jens.dreger at physik.fu-berlin.de> [010522 04:37]:
> > > Was ist denn das fuer eine haarstraeubende Problembeschreibung!
> > > Nochmal.
> > Und ich hatte mir solche Mühe gegeben...
> > 
> > Also, ich bekomme eine Liste, bei der einem unbekannten namen 3
> > attribute folgen, dann ein Doppelpunkt, nächster Name, wieder 3
> > Attribute, :, nächster Name.
> > also so:
> > name1 attr1a attr1b attr1c : name2 attr2a attr2b attr2c : name3 attr3a
> > attr3b attr3c : ... : namen attr1n attr2n attr3n
> > 
> > Diese Informationen will ich in ein hash spliten, also eigentlich so,
> > wie Du das schon gemacht hast. Nur eben automatisch einsortieren, da die
> > Array-länge (also die spätere Anzahl der keys) unbekannt ist.

Vielleicht meinst Du ja sowas hier:

-----------8<---------------------
#!/usr/local/bin/perl -w

my $line = "name1 attr11 attr12 attr13 : name2 attr21 attr22 attr23:";

foreach (split(/\s*:\s*/,$line)) {
  my($key, @rest) = split(/\s+/);
  $hash{$key} = [ @rest ];
}

foreach $key (keys %hash) {
  foreach (0..$#{$hash{$key}}) {
    print "attribute $_ of \$hash{$key} is ",$hash{$key}->[$_],"\n";
  }
}
---------------8<--------------------

Gruss,

Jens.



Mehr Informationen über die Mailingliste linux-l