Массивы


# Инициализация массивов

@a = (1,2,3,4,5);
@a = qw{1 2 3 4 5};
@a = (1..5);
@a = ("*") x 100;
$a[0] = -1;
@a = (<<EOF =~ m/^s+//gm);
  item1
  item2
EOF

# Обмен значений
($a,$b) = ($b,$a)

# Размер массива
print $#a, scalar(@a);
scalar(@a) == $#a+1

# Срезы, поиск и преобразования массива

# Срез
@b = @a[3,5];

# Поиск в массиве
@b = grep /test/, @a
@b = grep length($_)>3, @a

# Преобразование массива
@b = map { split ' ', $_ } @a;

# Для сортировки массива делаем так

@sorted=sort {
    return(1) if ($a>$b);
    return (0) if ($a==$b);
    return(-1) if ($a<$b);
} @numbers;

@sorted=sort { $a<=>$b; } @numbers;

# Используем массив как стек и очередь

push @array, $value;
$value = pop @array;
shift @array, $value;
$value = unshift @array;