Добрый день.
Пусть есть массив @a из 50 элементов, от 1 до 50. Я хочу разбить его
на 5 частей и занести в другой массив @res, что первый элемент содержал
массив 1..10, второй 11..20 и тд. Итак:
@a = (1..50);
@res = ();
for ($i = 0; $i < 5; $i++) {
$begin = 10 * $i;
$end = 10 * ($i + 1) - 1;
@a_slice = @a[$begin..$end]; # копируем срез во временный массив
push @res, \@a_slice; # и в новом массиве делаем на него ссылку
}
печатаем аолучившийся массив на экран:
for ($i = 0; $i < 5; $i++) {
for ($j = 0; $j < 10; $j++) {
printf " %2d", ${$res[$i]}[$j];
}
print "\n";
}
41 42 43 44 45 46 47 48 49 50
41 42 43 44 45 46 47 48 49 50
41 42 43 44 45 46 47 48 49 50
41 42 43 44 45 46 47 48 49 50
41 42 43 44 45 46 47 48 49 50
ну понятно. В окончательном массиве мы имеем пять ссылок на один и тот
же массив, который 5 раз обновлялся, и в последний раз туда записались
последние 10 из 50 элементов.
Ладно. Открываю perlref(tut) и читаю, что ссылки в Perl - это как
жесткие ссылки в Unix. Ага. Это в Unix означает, что у файла просто
2 имени - меняем содержимое одного, меняется, естественно, и у
другого - оба имени ссылаются на одну область памяти. Но если мы
удаляем одно из имен, то содержимое файла сохраняется - до тех пор,
пока мы не удали все имена. Поэтому я решил после того, как занес
в новый массив ссылку на @a_slice, сделать
undef @a_slice;
Но в итоге и ссылки в @res стали указывать на пустое место :(
То есть ссылки в Perl действуют несколько по-другому...
Как мне быть с моей задачей? Каждый раз в цикле называть временные
переменные по-разному?
Спасибо всем, кто поможет!

Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от cvasil

Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от cvasil
Ответ на:
комментарий
от murla

Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от murla

Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от murla

Ответ на:
комментарий
от vilfred

Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от murla

Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от murla

Ответ на:
комментарий
от vilfred
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [Perl] Метапрограмирование и ссылки на функции (2012)
- Форум Ссылки (2012)
- Форум Ссылки (2014)
- Форум Ссылки. (2015)
- Форум ссылка (2008)
- Форум ссылка # (2007)
- Форум ссылка (2005)
- Форум ссылка (2004)
- Форум Ссылки (1999)
- Форум [perl] strawberry perl (2009)