2017-02-21 16 views
-1

Perlのスカラー変数に0を代入する方法は? マイコード:Perlのスカラー変数に0を代入

$x=0; 

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

出力:use strict;use warnings;

+0

'pass'を印刷する必要があります – ssr1012

+4

なぜ' 0'が真の値になると思いますか? Perlではfalseとカウントされます。 – melpomene

+1

回答が得られたら、質問を大きく変更しないでください。あなたの編集のために、Sobriqueの答えはもはや意味をなさないので、将来このページを訪れる人は '!x'がどこから来ているのか混乱するでしょう。そのため、使用している正確なコードを常にコピー&ペーストして、それ以上に問題を再現する[mcve]を作成する必要があります。 – ThisSuitIsBlackNot

答えて

3

電源を入れて失敗し、それが!xが間違っていることを教えてあげる:

裸の単語は、「厳格な潜水艦ながら、許可されていない "×" "使用中

! $x - または私のpreferenc 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 false?"と尋ねているPerlではゼロがfalseに等しいので、Perlはtrueを返します。あなたが知りたいのは、$ 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を追加する必要があります。

これは物事を明確にします。