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