Да, это влияет на память и время выполнения - при возврате ссылки возвращается один (относительно небольшой) скаляр и больше ничего.Возвращение массива или хеша в виде списка делает поверхностную копию массива / хеша и возвращает его, что может занять значительное время, чтобы сделать копию и память для хранения копии, если массив / хеш большой.
Функциональное различие между ними заключается просто в том, работаете ли вы с результатом как массив / хэш или как массивref / hashref.Некоторые люди считают ссылки гораздо более громоздкими для работы;лично я не считаю это существенным отличием.
Другое функциональное отличие состоит в том, что вы не можете возвращать несколько массивов или хэшей в виде списков (они сведены в один список), но вы можете вернуть несколько ссылок,Когда это происходит, это убийственная деталь, которая заставляет вас использовать ссылки, но мой опыт показывает, что это встречается очень редко, поэтому я не знаю, насколько важным я считаю это в целом.
Возвращаясь к вопросу о названии, я считаю, что наиболее важным фактором при возвращении списков и ссылок является то, что вы должны быть последовательными, чтобы вам не приходилось тратить свое время на запоминание того, какие функции возвращают массивы / хэши, а какие - ссылки.Учитывая, что ссылки в некоторых ситуациях лучше, и, по крайней мере для меня, ссылки никогда не оказываются значительно хуже, я предпочитаю стандартизировать всегда возвращать массивы / хэши в виде ссылок, а не списков.
(Вы могли бы также предпочитают стандартизировать использование wantarray
в ваших подпрограммах, чтобы они возвращали списки в контексте списка и ссылки в скалярном контексте, но я склонен считать, что это в значительной степени бессмысленное чрезмерное усложнение.)