2014-02-06 8 views
-4

После введения:Perl: Как предусмотреть двумерный массив?

use strict;

Мой 2-мерный массив не будет работать больше, и я не нахожу описания и не пример в документации, как predeclare их. Итак, что мне делать?

+2

Как вы заявили об этом, прежде чем использовать 'strict?'? В Perl вы не можете сказать «эй, у меня есть массив, и он двумерный». Все, что вы можете сказать, это «hey, у меня есть массив, вот он:' my @array =(); '. Тогда вы можете начать размещать ссылки на массивы, в этом два делают его двумерным на лету. – Andrejovich

+8

Кроме того, он не работает »не является описанием проблемы. Вы получаете какие-либо сообщения об ошибках? Любые предупреждения? (Используете ли вы предупреждения,', btw?) Какой результат вы ожидаете? Какой результат вы получаете? ** Предоставьте подробности. Поделитесь своими исследованиями ** – Andrejovich

+0

Прежде чем 'use strict', он не был предварительно оглашен. Таким образом, доступ' $ a [$ i] [$ j] 'не был проблемой. Когда он был впервые записан, было написано, когда оно было прочитано в первый раз, оно было прочитано. Теперь, при самом первом доступе, я получаю, конечно, «Глобальный символ» @zelle »требует явного имени пакета в строке ConwaysSpiel.pl 23', и я точно знаю, как Чтобы исправить это, массив должен быть глобальной переменной, поскольку он содержит игровое поле моделирования жизни Конвей. – ubuplex

ответ

1

Вы объявляете его точно так же, как вы бы 1D массив:

use strict; 
use warnings; 

my @AoA = (['a', 'b'], ['foo', 'bar']); 

print Dumper \@AoA; 

$VAR1 = [ 
      [ 
      'a', 
      'b' 
      ], 
      [ 
      'foo', 
      'bar' 
      ] 
     ]; 
2

Невозможно дать много полезной помощи из деталей, которые вы даете. Просто включение текста сообщения об ошибке было бы полезно.

В общем, если у вас есть ошибка, которую вы не понимаете, рекомендуется добавить use diagnostics в ваш код. Это даст вам более подробные объяснения любых возникших ошибок и предупреждений.

(. Но это следует рассматривать как инструмент развития - вы не должны оставлять его в коде, когда он идет в производство)

Смежные вопросы