Thread Zuweisung an Array in Test::More::use_ok() (11 answers)
Opened by barney at 2025-03-03 14:40

haj
 2025-03-04 20:55
#196931 #196931
User since
2015-01-07
569 Artikel
BenutzerIn

user image
Die Zeile ist überflüssig, aber solange sich niemand die Mühe eines Pull Requests macht, kräht wohl auch kein Hahn danach.

Ich vermute folgende Historie: Irgendwann im vorigen Jahrhundert stand da mal
Code (perl): (dl )
@imports = () unless defined @imports;

Das ist seit Perl 5.6 "deprecated" und inzwischen schon lang ein fataler Fehler. Die typische Empfehlung zur Reparatur war, das defined zu löschen, und ... da sind wir jetzt eben gelandet.

Was könnte also mit dem defined gemeint gewesen sein? In noch grauerer Vorzeit konnte wohl ein Array tatsächlich "nicht existieren" in dem Sinn, dass keine Variable dafür angelegt war. Dann scheitert der Zugriff auf \@imports, der 2001 noch im Code war. Die Zeile hätte somit den Zweck gehabt, ein nicht definiertes Array durch eine "definierte" leere Liste zu ersetzen, aber seit Version 5.6 gibt es da keinen Unterschied mehr. undef @list; ist erlaubt und das gleiche wie @list = (); und $#list=-1;.

Vor der Version 5.6 war Test::More nicht Bestandteil von Perldoc:Test::Simple und Test::Simple war nicht im Core, da verlieren sich die mir zugänglichen Spuren....

View full thread Zuweisung an Array in Test::More::use_ok()