Thread Arrays zusammenführen/mergen (16 answers)
Opened by styx-cc at 2020-03-13 21:20

haj
 2020-03-14 18:21
#191537 #191537
User since
2015-01-07
532 articles
BenutzerIn

user image
2020-03-14T14:06:18 Raubtier
(gut, ist vielleicht nicht das beste Argument, wo ich sonst immer sage, dass man ruhig alle Features einer Sprache nutzen soll).
Eben. Man darf durchaus drauf vertrauen, was in Perldoc:perlfunc keys steht:

Quote
Called in list context, returns a list consisting of all the keys of the named hash...
und weiter unten:
Quote
The returned values are copies of the original keys in the hash...
Die Liste ist also robust gegenüber allem, was mit dem Hash hintherher passiert.

Bei Perldoc:perlfunc each (each ist ein Iterator) wird genau beschrieben, unter welchen begrenzten Bedingungen man während des Schleifendurchlaufs Elemente löschen kann. Im Beispiel von styx-cc sind diese Bedingungen nicht erfüllt. Er befolgt aber den Hinweis:
Quote
To avoid these problems, use a "foreach" loop rather than "while"-"each".

Der Code von styx-cc hält sich an dokumentierte Schnittstellen und folgt beim Hash der Empfehlung. Mit der Prüfung mit exists ist er auch unabhängig von der Reihenfolge der Keys. Es ist ja weitgehend Geschmackssache, was man für fehleranfällig hält, aber "dringend abraten" wegen etwas, was der Code gar nicht tut, ging mir zu weit.

View full thread Arrays zusammenführen/mergen