Warum kehrt Perls Glob bei jedem zweiten Aufruf undef zurück?

Ich bin nicht unbedingt auf der Suche nach einem besseren Weg, sondern würde mich über eine Erläuterung der Ausgabe sehr freuen. Kürzlich fragte mich ein leitender Programmierer, warum sein Code funktioniert, aber nur für eine Instanz. Was ich herausfand, war, dass es bei jedem anderen Auftreten funktionierte. Hier ist mein Beispiel:

#!/usr/bin/perl -w
use strict;

my @list_env_vars = (
    '$SERVER',
    '$SERVER',
    '$SERVER',
    '$SERVER',
    '$SERVER',
    '$SERVER',
);

foreach (@list_env_vars){
    print "$_ = ".glob()."\n";
}

welche Ausgabe für Perl 5.004:

$SERVER = UNIX_SERVER
$SERVER =
$SERVER = UNIX_SERVER
$SERVER =
$SERVER = UNIX_SERVER
$SERVER =

oder Ausgabe für Perl 5.10:

$SITE = $SITE
Use of uninitialized value in concatenation (.) or string at glob_test.pl line 14.
$SITE =
$SITE = $SITE
Use of uninitialized value in concatenation (.) or string at glob_test.pl line 14.
$SITE =
$SITE = $SITE
Use of uninitialized value in concatenation (.) or string at glob_test.pl line 14.
$SITE =

Ich persönlich habe glob () noch nie auf diese Weise verwendet, daher war ich nicht in der Lage, ihm zu antworten. Lese ich durchperldoc glob Dokumentation und folgte derDatei :: Glob Link auf dieser Seite und konnte immer noch nichts finden, was die Ausgabe erklären würde. Jede Hilfe wäre sehr dankbar.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage