Por que o glob do Perl retorna para todas as outras chamadas?

Eu não estou necessariamente procurando uma maneira melhor de fazer isso, e sim uma explicação da saída seria muito apreciada. Recentemente, um programador sênior me perguntou por que seu código funcionava, mas apenas por uma instância. O que eu descobri foi que funcionava em todas as outras ocorrências. Aqui está o meu exemplo:

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

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

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

qual saída para perl 5.004:

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

ou saída 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 =

Eu pessoalmente nunca usei glob () dessa maneira, então eu estava mal equipado para responder a ele. Eu li atravésperldoc glob documentação e seguiu oArquivo :: Glob link nessa página e ainda não encontrei nada que explicasse a saída. Qualquer ajuda seria muito apreciada.

questionAnswers(3)

yourAnswerToTheQuestion