2017-02-21 25 views
-1

如何將0賦值給Perl中的標量變量? 我的代碼:將零賦值給Perl中的標量變量

$x=0; 

if(!$x) 
{ 
    print "fail"; 
} 
else 
{ 
    print "pass"; 
} 

輸出:失敗

+0

您需要輸入'pass' – ssr1012

+4

爲什麼你期待'0'是一個真正的價值?在Perl中它被視爲錯誤。 – melpomene

+1

獲得答案後,​​請不要更改您的問題。由於您的編輯,Sobrique的回答不再有意義,任何未來訪問此頁面的人都會對「!x」的來源感到困惑。這就是爲什麼你應該總是複製和粘貼你正在使用的確切代碼,或者甚至更好,創建一個能夠再現你的問題的[mcve]。 – ThisSuitIsBlackNot

回答

3

打開use strict;use warnings;,它會告訴你,!x是錯誤的:

裸詞 「X」 時不允許使用「嚴格潛艇「正在使用

它應該是! $x - 或者由我預先設定e,not $x

您應該總是use strict;use warnings 'all';

+5

這個「警告」全部來源於何處?我在這裏看過幾次(但從未「在野外」)。我一直使用'使用警告;'。 – melpomene

+0

@melpomene我們中的一些人做到了這一點,但不是我們所有人。例如,我不這樣做。但是比平常更多的警告不會傷害到真正的。 – simbabque

+3

@simbabque奇怪的是,它們是相同的:你不會用''use warnings'all''(['perldoc warnings']](https://metacpan.org/pod/warnings#DESCRIPTION) :「*所有警告均通過這些*中的任一個在塊中啓用」)。 – melpomene

-1

所以,它被分配,但你問Perl的錯誤問題。你問,「是$ x假?」並且因爲Perl中的零等於false,所以Perl說的是真的。你想知道的是,$ x被賦值爲零。

use strict; 
use warnings; 

my $x=0; 

if (not defined $x || $x != 0) { 
    print "fail"; 
} else { 
    print "pass"; 
} 

此打印pass

而且,正如我的同事們指出,經常使用use strict;use warnings;,當你這樣做,你還需要在你的$x前加上一個my

希望能夠澄清一些事情。