我在我的腳本下面幾行:字符串重載變量被視爲定義不管什麼
my $spec = shift;
if (!defined $spec) {
return ("Invalid specification", undef);
}
$spec = "$spec" // '';
我自然會想到這,通過undef
時,數組中返回警告Invalid specification
,與第二項目是undef
。相反,檢查通過了,我收到控制檯消息,警告我在下一行有Use of uninitialized value $spec in string
。
$spec
是一個帶有字符串和數字重載的對象,不幸的是這樣寫的,試圖在這個特定的子例程中測試真實性(例如通過if ($spec)
)導致深遞歸和段錯誤。
雖然我是興趣,爲什麼,到底,發生這種情況,我更感興趣的是如何讓它停止發生。我想消除控制檯警告,最好不要使用no warnings qw/uninitialized/
。這是可能的,如果是這樣,我該怎麼做?
嘗試'$規範// = '''或'$規範定義= $規範呢? 「$ spec」:''' –
偉大的問題。 – Zaid