Добрый день.
Пусть есть массив @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)