<div class="gmail_quote">No właśnie nie bardzo, bo to nie to samo.</div><div class="gmail_quote"><br></div><div class="gmail_quote">W przypadku Package::Alias, czy też konstrukcji *Alias = \*Oryginal wywołując metodę dostaniesz jako pierwszy parametr nie Oryginal ale niestety Alias:</div>
<div class="gmail_quote"><br></div><div class="gmail_quote"><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><div class="gmail_quote">$ perl -ale 'sub oryginal::m { print @_ }; *alias:: = \*oryginal::; oryginal->m(); alias->m() '</div>
<div class="gmail_quote">oryginal</div><div class="gmail_quote">alias</div><div><br></div><div>To czym to się różni od zwykłego dziedziczenia?</div><div><br><div><div>$ perl -ale 'sub oryginal::m { print @_ }; @alias::ISA=qw(oryginal); oryginal->m(); alias->m() '</div>
<div>oryginal</div><div>alias</div></div></div><div><br></div><div>Dla odmiany tak powinien działać prawdziwy mechanizm namespace:</div><div><br></div><div><div><div>$ perl -al << 'END'</div><div>> use B::Generate;</div>
<div>> use B::OPCheck entersub => check => sub {</div><div>> my ($unop) = @_;</div><div>> if ($unop->first->sibling->sv->PV eq "alias") {</div><div>> my $sv = B::svref_2object(\("oryginal"));</div>
<div>> $unop->first->sibling->sv($sv->sv);</div><div>> };</div><div>> };</div><div>> </div><div>> sub oryginal::m { print @_ };</div><div>> </div><div>> oryginal->m();</div>
<div>> alias->m();</div><div>> END</div><div>oryginal</div><div>oryginal</div></div></div><div><br></div><div><span class="Apple-style-span" style="border-collapse: separate; font-family: arial; ">No i właśnie coś takiego chciałbym mieć :)</span></div>
<div><span class="Apple-style-span" style="border-collapse: separate; font-family: arial; "><br></span></div></span></font></div><div class="gmail_quote">W dniu 19 lipca 2010 10:40 użytkownik piotr pogorzelski <span dir="ltr"><<a href="mailto:pp@webtel.pl">pp@webtel.pl</a>></span> napisał:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">-------- Original Message --------<br>
Subject: Re: [Warszawa-pm] Czego nie lubimy w Perlu?<br>
From: Piotr Roszatycki <<a href="mailto:piotr.roszatycki@gmail.com" target="_blank">piotr.roszatycki@gmail.com</a>><br>
To: <a href="mailto:warszawa-pm@pm.org" target="_blank">warszawa-pm@pm.org</a><br></div><div class="im">
Date: Sun Jul 18 2010 12:35:55 GMT+0200 (CET)<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hmm przypomniało mi się, czego jeszcze bardzo nie lubię w perlu. To brak<br>
sensownej obsługi namespace, przez co trzeba pisać za każdym razem<br>
Bardzo::Dlugie::Sciezki::Do::Wlasnych::Modulow. A wystarczyłoby coś w stylu:<br>
<br>
namespace Bardzo::Dluga::Sciezka;<br>
Modul->new;<br>
<br>
</blockquote></div>
(...)<div class="im"><br></div>
use Package::Alias BDS => 'Bardzo::Dluga::Sciezka';<br>
<br></blockquote></div><br>-- <br> .''`. Piotr Roszatycki<br>: :' : mailto:<a href="mailto:Piotr.Roszatycki@gmail.com">Piotr.Roszatycki@gmail.com</a><br>`. `' mailto:<a href="mailto:dexter@debian.org">dexter@debian.org</a><br>
`-<br>