Perl - что такое ссылки?

Привет ребята!
Я все еще "штудирую" Perl и добрался до момента, связанного с сылками. Кроме того, что с помощью ссылок можно создавать "многомерные массивы", т.е. "запихнуть" в массив элемент, который содержит значение отличное от скалярного, где еще можно их применить? Буду благодарен за разъяснения :)

...

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

Вобщем в Perl ссылки используются очень активно, но лучше об этом читать в книгах.

Вот хорошая

Вот хорошая книжка по ссылкам - http://c-books.info/books/news6.php/2008/06/30/izuchaem-glubzhe-perl.htm...
---
"На перле умеет писать очень мало человек. С этим ничего не поделаешь. Потому как очень мало людей могут держать себя в рамках если у них в руках убертул, которым можно сделать всё..." (c) Бацёк

Ссылки

Лично для меня ссылки удобны при выборе данных в какую-то упорядоченную структуру. Особо удобным преставляется хеш хешей разных уровней вложенности с их способностью самооживления или анонимные массивы в нескольких уровнях вложенности. Часто пользуюсь структурами типа
push @{ $ref->{ $subref  } }, [ split /\s+/,$line ];

Одно значение

simne написал

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

Вобщем в Perl ссылки используются очень активно, но лучше об этом читать в книгах.

 my ($a, $b, $c) = my_func();
 #Где-то далеко в коде
 sub my_func {
 ......
    return (1,2,3);
 }

да

rimas написал
simne написал

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

Вобщем в Perl ссылки используются очень активно, но лучше об этом читать в книгах.

 my ($a, $b, $c) = my_func();
 #Где-то далеко в коде
 sub my_func {
 ......
    return (1,2,3);
 }

лучше так:

 my %a = my_func();
 print $a{a};
 #Где-то далеко в коде
 sub my_func {
 ......
    return ('a' => 1,'b' => 2,'c' => 3);
 }

еще через ссылки реализуются многомерные массивы:

 my $a = my_func();
 print $a->[0]->[1];
 #Где-то далеко в коде
 sub my_func {
 ......
    return ([1,2,3],[4,5,6],[7,8,9]);
 }

а также в реальной жизни удобно работать с хешами массивов, или массивами хешей, и все это реализуется через ссылки.