Почему глобус Perl возвращает undef для каждого другого вызова?

Я не обязательно ищу лучший способ сделать это, скорее, объяснения выходных данных были бы очень благодарны. Недавно старший программист спросил меня, почему его код работает, но только для одного экземпляра. Я пришел к выводу, что это сработало в каждом другом случае. Вот мой пример:

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

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

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

какой вывод для Perl 5.004:

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

или вывод для 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 =

Лично я никогда не использовал glob () таким образом, поэтому был плохо подготовлен, чтобы ответить ему. Я прочиталPerldoc Glob документация и следовалФайл :: Glob ссылку на эту страницу и до сих пор не смог найти ничего, что могло бы объяснить вывод. Любая помощь приветствуется.

Ответы на вопрос(3)

Ваш ответ на вопрос