Если у меня есть массив, скажем @test и ссылаемся на элементы массива как $test[0] и т. д., как должен выглядеть мой оператор? одно из следующих?
my (@test,$test); # array and element
my (@test); #just the array
my ($test);
Вы спрашиваете, нужно ли вам объявлять $test для доступа к элементам массива @test
? Вы не знаете.
Все три возможны. Если переменная всего одна, скобки не нужны. Кроме того, обычно не рекомендуется использовать одно и то же имя для разных типов переменных (массива и скаляра). $test[0]
— первый элемент @test
, он не имеет никакого отношения к скалярной переменной $test
, но во избежание путаницы лучше не использовать одно и то же имя.
Кроме того, при объявлении скаляров и массивов лучше начинать со скаляров, чтобы вы могли фактически заполнить переменные.
my ($test, @tests); # Better naming. Parentheses needed.
my @tests; # Declares an array.
my $test; # Declares a scalar, not related to any array.
my ($one, @rest) = 'a' .. 'z'; # Populates both the scalar and the array.
my (@all, $last) = 'a' .. 'z'; # !! Populates just the array.
Если вам просто нужен массив, вам нужно только объявить массив:
my @test;
Когда Perl видит $test[0]
, он знает, что это одноэлементный доступ к массиву @test
.
Объявление my $test
будет относиться к совершенно отдельной скалярной переменной, не имеющей ничего общего с массивом.
Спасибо вам за разъяснение. это имеет смысл.
См. также stackoverflow.com/q/23031754/2173773