Thread delete $array[$i] (8 answers)
Opened by rosti at 2018-12-10 19:05

haj
 2018-12-10 19:47
#189363 #189363
User since
2015-01-07
169 articles
BenutzerIn
[default_avatar]
Die Funktion delete ist für Elemente eines Hash gedacht - nicht für Elemente eines Array. Dazu steht in der Dokumentation Perldoc:perlfunc delete:
Quote
WARNING: Calling "delete" on array values is strongly
discouraged. The notion of deleting or checking the existence of
Perl array elements is not conceptually coherent, and can lead
to surprising behavior.

Das wesentliche ist, dass delete die Indices auf weiterhin bestehende Array-Elemente nicht verändert. Das ist somit konsistent zum Löschen eines Hash-Wertes, da rücken die anderen Werte ja auch nicht eins auf. Wenn man tatsächlich die Elemente aus der Reihe entfernen will, dann gibt es dafür Perldoc:perlfunc splice, Perldoc:perlfunc splice
und Perldoc:perlfunc pop.

In Perl 6 ist das klarer geregelt: Es gibt gar kein delete auf Arrays, aber wie in Perl 5 splice.

View full thread delete $array[$i]