Я не обязательно ищу лучший способ сделать это, скорее, будут очень признательны за объяснения вывода. Недавно старший программист спросил меня, почему его код работает, но только в одном случае. Я пришел к выводу, что это срабатывало в каждом втором случае. Вот мой пример:
#!/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 и следил за File::Glob на этой странице и по-прежнему не может найти ничего, что могло бы объяснить вывод. Любая помощь приветствуется.