Как назначить 0 скалярной переменной в Perl? Мой код:Назначить переменную нуля для скаляра в Perl
$x=0;
if(!$x)
{
print "fail";
}
else
{
print "pass";
}
Выход: Нормально
Как назначить 0 скалярной переменной в Perl? Мой код:Назначить переменную нуля для скаляра в Perl
$x=0;
if(!$x)
{
print "fail";
}
else
{
print "pass";
}
Выход: Нормально
Включите use strict;
и use warnings;
и скажу вам, что !x
неправильно:
Bareword "х" не допускается в то время как «строгие подлодки "in use
Это должно быть ! $x
- или по моему желанию e, not $x
.
Вы должны ВСЕГДА use strict;
и use warnings 'all';
.
Откуда появился этот «предупреждающий» all'' meme? Я видел это несколько раз здесь, на SO (но никогда не «в дикой природе»). Я всегда использовал 'use warnings;'. – melpomene
@melpomene мы это делаем, но не «все» из нас. Я, например, не делаю. Но больше предупреждений, чем обычно, не может навредить. – simbabque
@simbabque Странно то, что они идентичны: вы не получаете больше предупреждений с 'use warnings 'all'' ([' perldoc warnings'] (https://metacpan.org/pod/warnings#DESCRIPTION) : «* Все предупреждения включены в блоке одним из этих *»). – melpomene
Итак, он назначается, но вы задаете Perl неправильный вопрос. Вы спрашиваете: «$ x false?» и поскольку нуль равен false в Perl, 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;
и когда вы сделаете это, вы также должны добавить my
перед вашим $x
.
Надеюсь, это прояснит ситуацию.
Вам нужно напечатать 'pass' – ssr1012
Почему вы ожидаете, что' 0' будет истинным значением? Он считается ложным в Perl. – melpomene
Пожалуйста, не меняйте свой вопрос значительно после того, как вы получили ответы. Из-за вашего редактирования ответ Sobrique больше не имеет смысла, и любой, кто посещает эту страницу в будущем, будет смущен тем, откуда приходит '! X'. Вот почему вы всегда должны копировать и вставлять точный код, который вы используете, или даже лучше, создать [mcve], который воспроизводит вашу проблему. – ThisSuitIsBlackNot