【发布时间】:2025-11-30 11:45:01
【问题描述】:
我正在清理我的 Perl 代码以用于生产版本,并在 Apache 错误日志中发现了一个奇怪的警告。
上面写着:
[Thu Nov 5 15:19:02 2009] Clouds.pm: Use of uninitialized value $name in substitution (s///) at /home/mike/workspace/olefa/mod-bin/OSA/Clouds.pm line 404.
相关代码在这里:
my $name = shift @_;
my $name_options = shift @_;
$name_options = $name_options eq 'unique' ? 'u'
: $name_options eq 'overwrite' ? 'o'
: $name_options eq 'enumerate' ? 'e'
: $name_options =~ m/^(?:u|o|e)$/ ? $name_options
: q();
if ($name_options ne 'e') {
$name =~ s/ /_/g;
}
那么,为什么在明确初始化时会发出未初始化变量的警告?
【问题讨论】:
-
你怎么知道你向这个函数传递了什么?
-
在计算机编程中,“清楚地”、“明显地”和“直截了当”这样的词具有讽刺意味。当你说出它们的时候,事实恰恰相反。这是宇宙法则。
标签: perl apache variables warnings