无法使用 perl 的 Config::Simple 模块读取配置文件并死掉
Trouble reading config file with perl's Config::Simple module and die
我正在尝试使用 Config::Simple 模块在 perl 中读取一个简单的配置文件。该配置文件中的一行是一个数组,如下所示:
# EXTENSIONS TO TRANSFER
extensions = "\.mpg$","\.txt$"
我可以像这样成功读取这个数组(并验证数据):
@ext = $cfg->param("extensions");
print @ext;
.mpg$ .txt$
如果我尝试做一些基本的错误检查,我 运行 就会遇到问题,具体来说,如果参数不存在于配置文件中,就死掉。但是,如果它成功解析数组,它只是打印出内存位置而不是实际内容:
@ext = $cfg->param("extensions") || die "Failed to read 'extensions'";
print @ext;
ARRAY(0x9403788)
为什么会发生这种情况,我该怎么做才能解决这个问题?
当你清楚地划分优先级时会发生什么?
(@ext = $cfg->param("extensions")) || die "Failed to read 'extensions'";
print @ext;
或者使用较低的优先级 or
行得通吗?
@ext = $cfg->param("extensions") or die "Failed to read 'extensions'";
print @ext;
详情见Perl Idioms Explained - && and || "Short Circuit" operators。
我正在尝试使用 Config::Simple 模块在 perl 中读取一个简单的配置文件。该配置文件中的一行是一个数组,如下所示:
# EXTENSIONS TO TRANSFER
extensions = "\.mpg$","\.txt$"
我可以像这样成功读取这个数组(并验证数据):
@ext = $cfg->param("extensions");
print @ext;
.mpg$ .txt$
如果我尝试做一些基本的错误检查,我 运行 就会遇到问题,具体来说,如果参数不存在于配置文件中,就死掉。但是,如果它成功解析数组,它只是打印出内存位置而不是实际内容:
@ext = $cfg->param("extensions") || die "Failed to read 'extensions'";
print @ext;
ARRAY(0x9403788)
为什么会发生这种情况,我该怎么做才能解决这个问题?
当你清楚地划分优先级时会发生什么?
(@ext = $cfg->param("extensions")) || die "Failed to read 'extensions'";
print @ext;
或者使用较低的优先级 or
行得通吗?
@ext = $cfg->param("extensions") or die "Failed to read 'extensions'";
print @ext;
详情见Perl Idioms Explained - && and || "Short Circuit" operators。