Alexander (HH): Keys in Hash löschen

Beitrag lesen

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

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".