<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><br><span></span></div><div class="yui_3_7_2_18_1350546307805_211" style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span>Спасибо. Оказывается я старую доку читал.</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span>Там не было прототипа "+".<br></span></div><div><br></div>  <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"> <font size="2" face="Arial"> <hr size="1">  <b><span style="font-weight:bold;"><span id="misspell-0"
 class="mark">From</span>:</span></b> <span id="misspell-1" class="mark">Mons</span> <span id="misspell-2" class="mark">Anderson</span> <mons@cpan.org><br> <b><span style="font-weight: bold;"><span id="misspell-3" class="mark">To</span>:</span></b> Moscow.pm group <moscow-pm@pm.org> <br> <b><span style="font-weight: bold;"><span id="misspell-7" class="mark">Sent</span>:</span></b> <span id="misspell-8" class="mark">Thursday</span>, 18 <span id="misspell-9" class="mark">October</span> 2012, 15:27<br> <b><span style="font-weight: bold;"><span id="misspell-10" class="mark">Subject</span>:</span></b> <span id="misspell-11" class="mark">Re</span>: [Moscow.pm] Прототипы<br> </font> </div> <br><meta http-equiv="x-dns-prefetch-control" content="off"><div id="yiv2142649546">1. Тщательно прочитайте <span id="misspell-14" class="mark">perlsub</span><div>2. Используйте прототипы с случае, если
 вы делаете функцию, которая "могла-бы быть в перле", т.е. что-то похожее на встроенный функционал</div><div>3. никогда не используйте прототипы для методов (они все равно не работают)</div>
<div>4. Если вам нужно вызвать функцию без учета прототипа (как например <span id="misspell-15" class="mark">foo</span>($<span id="misspell-16" class="mark">sub</span>,$<span id="misspell-17" class="mark">arg</span>)), то можно подавить проверку прототипа при помощи &: &<span id="misspell-18" class="mark">foo</span>($<span id="misspell-19" class="mark">sub</span>,$<span id="misspell-20" class="mark">arg</span>);</div><div><br></div><div><br></div><div><div class="yiv2142649546gmail_quote">
2012/10/17 ksvs <span dir="ltr"><<a rel="nofollow" ymailto="mailto:ksvs1996@ymail.com" target="_blank" href="mailto:ksvs1996@ymail.com">ksvs1996@ymail.com</a>></span><br><blockquote class="yiv2142649546gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div style="font-size:12pt;font-family:times new roman, new york, times, serif;"><div>А почему для</div><div><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<span><span id="misspell-22" class="mark">sub</span></span> <span><span id="misspell-23" class="mark">foo</span></span>(&$) {<br>    <span><span id="misspell-24" class="mark">my</span></span> ($s, $v) = @_;<br>    $s->($v);<br>}</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">Вызов </div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<span><span id="misspell-25" class="mark">foo</span></span> <span><span id="misspell-26" class="mark">sub</span></span> { <span><span id="misspell-27" class="mark">print</span></span> @_ }, "<span><span id="misspell-28" class="mark">hello</span></span>\n";</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<span><span id="misspell-29" class="mark">работат</span></span></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;"><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
И </div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;"><span><span id="misspell-30" class="mark">foo</span></span> { <span><span id="misspell-31" class="mark">print</span></span> @_ } "<span><span id="misspell-32" class="mark">hello</span></span>\n";</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
работает</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;"><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
А<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;"><span><span id="misspell-33" class="mark">my</span></span> $<span><span id="misspell-34" class="mark">print</span></span> = <span><span id="misspell-35" class="mark">sub</span></span> { <span><span id="misspell-36" class="mark">print</span></span> @_ };<br><span><span id="misspell-37" class="mark">foo</span></span> $<span><span id="misspell-38" class="mark">print</span></span>, "<span><span id="misspell-39" class="mark">hello</span></span>\n";</div>
<div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">Не работает?</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">Почему большую функцию не можно вынести отдельно?</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">Неужели <span><span>придется</span></span> писать</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<span><span id="misspell-40" class="mark">sub</span></span> <span><span id="misspell-41" class="mark">foo</span></span>($$);</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;"><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">Аналогичная ситуация с массивами и <span><span id="misspell-42" class="mark">хешами</span></span>:</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;"><span><span id="misspell-43" class="mark">sub</span></span> foo(\@\%) {<br>    <span><span id="misspell-44" class="mark">my</span></span> ($a, $h) = @_;<br>    <span><span id="misspell-45" class="mark">print</span></span> <span><span id="misspell-46" class="mark">scalar</span></span> @$a, "\n";<br>
}<br><br><span><span id="misspell-47" class="mark">my</span></span> @<span><span id="misspell-48" class="mark">foo</span></span> = (1, 2);<br><span><span id="misspell-49" class="mark">my</span></span> %<span><span id="misspell-50" class="mark">foo</span></span> = (1 => 2);<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">Вот так <span><span id="misspell-51" class="mark">работате</span></span>.<br><span><span id="misspell-52" class="mark">foo</span></span> @<span><span id="misspell-53" class="mark">foo</span></span>, %<span><span id="misspell-54" class="mark">foo</span></span>;<br>
</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;"><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">А так <br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<span><span id="misspell-55" class="mark">foo</span></span> \@foo, \%<span><span id="misspell-56" class="mark">foo</span></span>;</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">не работает.</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
<br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">А если у меня <span>ссылки</span> на массивы, что что <span><span>придется</span></span> их <span><span>разыменовывать</span></span> только для вызова?</div>
<div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;"><br></div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">
Зачем тогда такие прототипы нужны?</div><div style="font-style:normal;font-size:16px;background-color:transparent;font-family:times new roman, new york, times, serif;">А если везде использовать в <span><span>прототипах</span></span> $, то
 зачем тогда эти все @ и %?<br></div></div></div><br>--<br>
Moscow.pm <span id="misspell-59" class="mark">mailing</span> <span id="misspell-60" class="mark">list</span><br>
<a rel="nofollow" ymailto="mailto:moscow-pm@pm.org" target="_blank" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a rel="nofollow" target="_blank" href="http://moscow.pm.org/">http://moscow.pm.org</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><span id="misspell-61" class="mark">Best</span> <span id="misspell-62" class="mark">wishes</span>,<br><span id="misspell-63" class="mark">Vladimir</span> V. <span id="misspell-64" class="mark">Perepelitsa</span> <span id="misspell-65" class="mark">aka</span> <span id="misspell-66" class="mark">Mons</span> <span id="misspell-67" class="mark">Anderson</span><br><<a rel="nofollow" ymailto="mailto:inthrax@gmail.com" target="_blank" href="mailto:inthrax@gmail.com">inthrax@gmail.com</a>>, <<a rel="nofollow" ymailto="mailto:mons@cpan.org" target="_blank" href="mailto:mons@cpan.org">mons@cpan.org</a>><br>
<a rel="nofollow" target="_blank" href="http://github.com/Mons">http://github.com/Mons</a><br>
</div>
</div><meta http-equiv="x-dns-prefetch-control" content="on"><br>-- <br>Moscow.pm <span id="misspell-70" class="mark">mailing</span> <span id="misspell-71" class="mark">list</span><br><a ymailto="mailto:moscow-pm@pm.org" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a><br><br><br> </div> </div>  </div></body></html>