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.