我最近遇到一個錯誤,use warnings FATAL ...
編譯指示將來自其他地方的靜音警告解釋爲死亡原因。使用關於整個項目的警告同樣的政策致命未初始化警告 - 在遠處採取行動
use strict;
# In one file:
no warnings;
my %hash;
Foo->bar(my $temp = $hash{ +undef }); # this lives
Foo->bar($hash{ +undef }); # this dies
# Elsewhere
package Foo;
use warnings FATAL => qw(uninitialized);
sub bar {
my ($self, $param) = @_; # prefectly safe
$param = "(undef)"
unless defined $param; # even safer
print "Param: $param\n";
}
現在,這當然可以固定大的時候:考慮下面的示例。或者可以通過排除特定位置的undefs來解決這個問題(參見# this lives
一行)。
我的問題是Foo包是否有一個可接受的解決方案,它不需要改變調用它的任何東西,以及這是否真的是Perl本身的錯誤。
難以置信。至少現在開始有意義了...... – Dallaylaen