我是 Perl 的新手,似乎遇到了一些我不理解且出乎意料的行为。
我正在尝试编写一个函数,尝试从存储在数组中的可能位置列表中加载配置文件。我使用循环foreach
遍历数组并检查文件是否存在,但在第一次迭代之后,即使传递给它的值是静态的单引号字符串,glob
它也会返回。为什么?undef
以下是代码:
package MyPackage;
use warnings; use strict;
our @ConfigSearchPaths = (".", "~");
our $DefaultConfigName = ".my_config_file";
sub load_user_config
{
my ( $obj, $filename ) = @_;
$filename ||= $DefaultConfigName;
CONFIG_SEARCH: foreach my $search_path (@ConfigSearchPaths)
{
my $file_path = glob( "$search_path/$filename" );
# I added this line to test if the issue was related to interpolation
# but to my surprise, this also returns 'undef' after the first iteration.
my $file_path_2 = glob( '~/.my_config_file' );
if( -r $file_path )
{
# Parse the file...
}
}
}