Помощь Perl If и Elsif - PullRequest
       24

Помощь Perl If и Elsif

0 голосов
/ 06 апреля 2011

Хорошо, я все еще новичок в Perl, поэтому ответ на этот вопрос может показаться довольно очевидным, но я немного поработал в Python и столкнулся с проблемой при изучении if, elsif иеще петли;в частности, что они не работают должным образом.Вот мой код:

my $x = 0;
print "X has been set to ". $x .".\n";

while ($x<11)
{
  $x++;
  print "The value of x is now ". $x .".\n";
  if ($x>4, $x<7){
      print "Something\n";
      system ("Pause");
  }

  elsif ($x>7, $x>11){ #<--Here
  print "Something else\n";
  system ("Pause");
  }

  elsif ($x==11){
      print "Last line\n";
  }
} #<-- and Here
system "Pause";

Возможно, моя проблема уже очевидна, но если нет, то проблема в том, что она, похоже, не вычисляет ни одно из выражений;он просто печатает первый найденный цикл, который в этом случае является циклом if.Если я удалю его или закомментирую, он сразу перейдет к первому циклу elsif;то есть, независимо от значения x, он печатает первый найденный цикл без какой-либо оценки.Когда я добавил

use strict;
use warnings;

, я получил предупреждение "Бесполезное использование числового gt (>) в пустом контексте в строке 16 " и то же самое для строки 24. Я выделил ихв исходном коде со стрелками и тут.Я что-то делаю / не делаю что-то, чем я должен быть?

Ответы [ 2 ]

4 голосов
/ 06 апреля 2011
use strict;
use warnings;

while ($x<11)
{
  $x++;
  print "The value of x is now ". $x .".\n";
  if ($x>4 and $x<7){
      print "Something\n";
      system ("Pause");

  }elsif ($x>7 and $x>11){ #<--Here
    print "Something else\n";
    system ("Pause");

  }elsif ($x==11){
      print "Last line\n";
  }
} #<-- and Here
system "Pause";
4 голосов
/ 06 апреля 2011

if (expr1, expr2) будет игнорировать expr1. Возможно, вы имели в виду and или &&? (Также, если это так, ваш elsif должен тестировать x<11.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...