2013-06-01 222 views
0

我想執行這個簡單的代碼,但它已經給我了以下錯誤:在permutation.pl線串使用未初始化值

使用未初始化值$字符串的11

#!usr/bin/perl 

use strict ; 
use warnings ; 



sub message { 
my ($string) = @_ ; 
print "$string" ; 
    } 
message() ; 
+2

您不會將任何參數傳遞給'message'。 – squiguy

回答

5

您沒有將任何參數傳遞給message,因此其@_爲空,因此您將undef指定爲$string,這會導致$string被字符串化時的警告。

修復:

message("Hello, world\n"); 
4

確保您傳遞非undef值的函數(傳遞任何參數都還屬於這一類),或做出輸入參數的默認值。 //=檢查變量是否爲undef,如果是,則爲其設置正確的值(一個空字符串)。

#!usr/bin/perl 

use strict; 
use warnings; 


sub message { 
    my ($string) = @_ ; 
    $string //= ""; 
    print "$string" ; 
} 
message() ; 
+2

如果你解釋了// =做了什麼會有幫助。 – squiguy