Почему мой Perl-код не работает, когда я помещаю его в цикл foreach? - PullRequest
1 голос
/ 07 мая 2010

Этот код правильно выводит скаляры в массиве строк:

  $line = "This is my favorite test";
  @row = split(/ /, $line);

  print $row[0];
  print $row[1];

Тот же код внутри цикла foreach не печатает скалярные значения:

  foreach $line (@lines){
      @row = split(/ /, $line);
      print $row[0];
      print $row[1];
  }

Что может вызватьэто случится?

Я новичок в Perl, пришедшем из python.Мне нужно изучить Perl для моей новой должности.

Ответы [ 2 ]

3 голосов
/ 07 мая 2010

Как уже упоминалось в комментариях Джефроми, какая бы проблема ни была, она существует вне кода, который вы опубликовали. Это прекрасно работает:

$lines[0] = "This is my favorite test";

foreach $line (@lines) {
    @row = split(/ /, $line);
    print $row[0];
    print $row[1];
}

Выход Thisis

0 голосов
/ 09 мая 2010

Когда я сталкиваюсь с такими проблемами, когда мне интересно, почему что-то в блоке не происходит, я добавляю некоторый код отладки, чтобы убедиться, что я действительно вхожу в блок:

 print "\@lines has " . @lines . " elements to process\n";
 foreach my $line ( @lines )
      {
      print "Processing [$line]\n";
      ...;
      }

Вы также можете делать это в своем любимом отладчике, устанавливая точки останова и проверяя переменные, но это слишком сложная работа для меня. :)

Если вам нужно выучить Perl и уже знать Python, у вас не должно быть особых проблем с прохождением Изучение Perl через пару дней.

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