¿Por qué Perl's glob devuelve undef para cada otra llamada?

No necesariamente estoy buscando una mejor manera de hacer esto, sino que se agradecerán las explicaciones de los resultados. Recientemente, un programador senior me preguntó por qué funcionaba su código, pero solo para una instancia. Lo que vine a descubrir fue que funcionó en cualquier otro caso. Aquí está mi ejemplo:

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

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

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

que la salida para Perl 5.004:

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

o salida para 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 =

Personalmente, nunca he usado glob () de esta manera, así que no estaba preparado para responderle. Leí a travésperldoc glob documentación y siguió elArchivo :: Glob enlace en esa página y aún no se puede encontrar nada que explique el resultado. Cualquier ayuda sería muy apreciada.

Respuestas a la pregunta(3)

Su respuesta a la pregunta