Dlaczego glob zwraca Perla undef na każde inne połączenie?

Niekoniecznie szukam lepszego sposobu na zrobienie tego, a wyjaśnienia wyników byłyby bardzo mile widziane. Niedawno starszy programista zapytał mnie, dlaczego jego kod działa, ale tylko dla jednej instancji. Dowiedziałem się, że działało ono w każdym innym przypadku. Oto mój przykład:

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

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

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

który wynik dla perla 5.004:

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

lub wyjście dla 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 =

Ja osobiście nigdy nie korzystałem z glob () w ten sposób, więc nie byłem przygotowany na odpowiedź. Przeczytałemperldoc glob dokumentacja i podążałem zaPlik :: Glob link na tej stronie i nadal nie możesz znaleźć niczego, co wyjaśniałoby wynik. Każda pomoc byłaby bardzo mile widziana.

questionAnswers(3)

yourAnswerToTheQuestion