Keys in Hash löschen
hotti
- perl
0 Alexander (HH)0 hotti
Hi,
s. Thema, die Keys im hash sind alle numerisch. Gibts da eine Möglichkeit, mit einem Rutsch alle Keys zu löschen, die kleiner als eine von mir bestimmte Zahl sind? Also ohne eine Schleife zu legen. So etwa:
delete $hash{< 333} ???
Hotte
Moin Moin!
s. Thema, die Keys im hash sind alle numerisch.
Warum nimmst Du kein Array?
Gibts da eine Möglichkeit, mit einem Rutsch alle Keys zu löschen, die kleiner als eine von mir bestimmte Zahl sind? Also ohne eine Schleife zu legen. So etwa:
delete $hash{< 333} ???
Nö, Du kannst auf eine explizite Schleife verzichten, aber implizit läuft immer eine Schleife.
Du könntest Dir mit dem Flipflop-Operator und einem Hash-Slice behelfen, sofern Du den kleinstmöglichen Key kennst und die Keys ganze Zahlen sind:
perl -e '$x{$_}=$_ for 1..10; delete @x{1..5}; print join "," => keys %x'
6,7,9,8,10
Ansonsten bleibt Dir eigentlich nur noch grep:
perl -e '$x{$_}=$_ for 1..10; delete @x{grep { $_ < 6 } keys %x}; print join "," => keys %x'
6,7,9,8,10
Alexander
Moin Moin!
Ansonsten bleibt Dir eigentlich nur noch grep:
perl -e '$x{$_}=$_ for 1..10; delete @x{grep { $_ < 6 } keys %x}; print join "," => keys %x'
Juhu, das geht, danke Dir Alexander!
Viele Grüße,
Hotti