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
@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
Test::Simple und
Test::Simple war nicht im Core, da verlieren sich die mir zugänglichen Spuren....