<div>Эмм, возможно, я пропустила, но я бы добавила небольшое объяснение про прототипы функции, что это спорная штука, и многие считают, что оно скорее зло, чем добро. И вот простой пример: д<span style="font-size:14.4px;font-family:Arial,Helvetica,sans-serif;line-height:20px;">опустим, есть функция, которая хочет два скаляра в качестве аргументов, один обязательный, один нет (это будет записано как sub func($;$)). Я завожу массив @arr = qw/a b/ и вызываю функцию от массива: func(</span><a href="http://staff.yandex-team.ru/arr" lang="arr" style="font-size:14.4px;margin:0px;color:#1a3dc1;font-family:Arial,Helvetica,sans-serif;line-height:20px;" data-login="arr">@arr</a><span style="font-size:14.4px;font-family:Arial,Helvetica,sans-serif;line-height:20px;">). Логично будет подумать, что "а" положится в первый аргумент, а "b" во второй. Однако, это не так. Перл хочет скаляр, поэтому то, что он получает, он и интерпретирует как скаляр, а получает он массив - и значит, он просто берёт длину массива, то есть, 2, а второй аргумент функции у него будет неопределён. И никакой ошибки не напишет, поэтому отследить это будет трудно.</span></div><div><span style="font-size:14.4px;font-family:Arial,Helvetica,sans-serif;line-height:20px;">Большая статья на тему: </span><font face="Arial, Helvetica, sans-serif"><span style="line-height:20px;"><a href="http://www.perlmonks.org/?node_id=861966">http://www.perlmonks.org/?node_id=861966</a></span></font></div><div><font face="Arial, Helvetica, sans-serif"><span style="line-height:20px;">Статья покороче: <a href="http://www.perlmonks.org/?node_id=406231">http://www.perlmonks.org/?node_id=406231</a></span></font></div><div> </div><div>13.08.2014, 19:34, "Andrey Asyakin" <asan999@gmail.com>:</div><blockquote type="cite"><p>Ступил по поводу $_[0]{}, бывает.<br /><br /><br /><br /><br />13.08.2014 18:40, Victor Efimov пишет:</p><blockquote> 13 августа 2014 г., 18:14 пользователь Andrey Asyakin<br /> <<a href="mailto:asan999@gmail.com">asan999@gmail.com</a>> написал:<br /><blockquote> Критика)<br /><br /> В статье написано, что в Perl параметры в функцию передаются по ссылке.<br /> Возможно правильней было бы написать, что элементы @_, $_[0], и т.д.<br /> являются алиасами, то бишь магическими переменными.<br /> Ссылка это ссылка все же, это может ввести в заблуждение.</blockquote> "пареметр по ссылке" - это больше общепрограммистский термин.<br /><br /> <a href="https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29">https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29</a><br /> ===<br /> Передача параметра по ссылке означает что копируется не само значение,<br /> а адрес исходной переменной (как в случае передачи параметра по<br /> адресу), однако синтаксис используется такой, чтобы программисту не<br /> приходилось использовать операцию разыменования и он мог иметь дело<br /> непосредственно со значением, хранящимся по этому адресу (как в случае<br /> передачи параметра по значению).<br /> ===<br /><br /> как раз "не приходилось использовать операцию разыменования"<br /><br /> но то что это алиасинг - согласен. это впринципе больше перловое. как<br /> раз не вижу отличий в алиасинге и "передаче по ссылке". магия тоже<br /> передаётся, но это внутренности перл.<br /><blockquote> Кстати, хмм, не знал до недавнего момента, что с элеменами @_можно работать<br /> без разыменовывания:<br /><br />   perl -E 'f({x => 42}); sub f { say $_[0]{x}, $_[0]->{x} }'</blockquote> а что тут необычного? ведь вроде считается что любой "->" между "]" и<br /> "{" можно просто удалить?<br /><blockquote> 13.08.2014 16:30, Тимур Нозадзе пишет:<br /><br /> Всем спасибо на добром слове. Мы старались.<br /> Но а как же конструктивная критика? ;)<br /><br /><br /> 13 августа 2014 г., 16:03 пользователь Denis Fedoseev<br /> <<a href="mailto:denis.fedoseev@gmail.com">denis.fedoseev@gmail.com</a>> написал:<br /><blockquote> Отличная статья, все просто и понятно - молодцы :)<br /><br /><br /> 13 августа 2014 г., 15:51 пользователь Naim Sh <<a href="mailto:shafiev@gmail.com">shafiev@gmail.com</a>><br /> написал:<br /><blockquote> Ребята, вы молодцы . +1<br /><br /><br /> On 08/13/2014 04:29 PM, Alexey Shrub wrote:<br /><blockquote> Приветствую,<br /><br /> да, вчера видал, бегло просмотрел, неплохо и весьма подробно описано<br /><br /> Wed, 13 Aug 2014 13:17:51 +0400 от Тимур Нозадзе<br /> <<a href="mailto:timur.nozadze@gmail.com">timur.nozadze@gmail.com</a>>:<br /><blockquote> Мы тут, дабы принесть немного света в наш мир, коллективно соорудили<br /> статью:  <a href="http://habrahabr.ru/company/regru/blog/232933/">http://habrahabr.ru/company/regru/blog/232933/</a> .<br /> Между прочим, пользуется большим интересом среди хабрапользователей,<br /> что не может не радовать. И даже никто не троллит Perl в комментах. Так что,<br /> может быть, у Perl-сообщества ещё не всё так плохо. ;)<br /> Приглашаем всех поучаствовать в обсуждении.</blockquote></blockquote> --<br /> Moscow.pm mailing list<br /> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/">http://moscow.pm.org</a></blockquote> --<br /> С уважением, Денис Федосеев<br /><br /> --<br /> Moscow.pm mailing list<br /> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/">http://moscow.pm.org</a></blockquote> --<br /> С уважением, Тимур Нозадзе<br /><br /><br /><br /><br /> --<br /> Moscow.pm mailing list<br /> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/">http://moscow.pm.org</a></blockquote></blockquote><p>-- <br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/">http://moscow.pm.org</a></p></blockquote>