Também nada, Daniel...<br><br>Tá tudo no mesmo diretório. Todos arquivos com permissão total, só para teste. E mesmo assim nada.<br><br>Abraços<br><br><div class="gmail_quote">2010/12/7 Daniel Vinciguerra <span dir="ltr">&lt;<a href="mailto:daniel-vinciguerra@hotmail.com">daniel-vinciguerra@hotmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">



<div>
<div><br></div>coloque o seguinte no seu código...<div><br></div><div>use lib &#39;/path/para/diretório/arquivos/.pm&#39;;</div><div><br></div><div>... e descomente o require.</div><div>Acredito que isso deve funcionar.<br>
<br></div><div>Ua,<br><br><font face="Verdana">Daniel Vinciguerra - Developer<br><a href="http://github.com/dvinciguerra" target="_blank">http://github.com/dvinciguerra</a><br></font><div style=""><br></div><br><br><br><br>
&gt; Date: Tue, 7 Dec 2010 16:02:47 -0200<br>&gt; From: <a href="mailto:mantovani@perl.org.br" target="_blank">mantovani@perl.org.br</a><br>&gt; To: <a href="mailto:cascavel-pm@pm.org" target="_blank">cascavel-pm@pm.org</a><br>
&gt; Subject: Re: [Cascavel-pm] Reflexão em Perl<div><div></div><div class="h5"><br>&gt; <br>&gt; Você tem um arquivo chamado Foo.pm no mesmo diretório do <a href="http://script.pl" target="_blank">script.pl</a> que<br>&gt; está fazendo o require ?<br>
&gt; <br>&gt; 2010/12/7 Tom Mostard &lt;<a href="mailto:capmostarda@gmail.com" target="_blank">capmostarda@gmail.com</a>&gt;:<br>&gt; &gt;<br>&gt; &gt; Daniel,<br>&gt; &gt; Obrigado pela ajuda! Mas aqui continuar sem solução.<br>
&gt; &gt;<br>&gt; &gt; package Foo;<br>&gt; &gt;<br>&gt; &gt; sub new { return bless {}, shift }<br>&gt; &gt; sub method { my $self = shift; print &quot;Work!\n&quot; }<br>&gt; &gt;<br>&gt; &gt; 1;<br>&gt; &gt;<br>&gt; &gt;<br>
&gt; &gt; package main;<br>&gt; &gt;<br>&gt; &gt; my ( $class, $method ) = ( &#39;Foo&#39;, &#39;method&#39; );<br>&gt; &gt; # require $class;<br>&gt; &gt; $class-&gt;new-&gt;$method;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; Quando uso o require acima, tenho a seguinte mensagem:<br>
&gt; &gt; Can&#39;t locate Foo in @INC (@INC contains: /etc/perl<br>&gt; &gt; /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5<br>&gt; &gt; /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10<br>
&gt; &gt; /usr/local/lib/site_perl .) at ./<a href="http://main.pl" target="_blank">main.pl</a> line 6.<br>&gt; &gt;<br>&gt; &gt; Se eu comento o &quot;require&quot;, tenho a seguinte mensagem:<br>&gt; &gt; Can&#39;t locate object method &quot;new&quot; via package &quot;Foo&quot; (perhaps you forgot to<br>
&gt; &gt; load &quot;Foo&quot;?) at ./<a href="http://main.pl" target="_blank">main.pl</a> line 7.<br>&gt; &gt;<br>&gt; &gt; Será que preciso instalar algum módulo? Ainda não tentei o Class::MOP nem o<br>&gt; &gt; Moose. Queria resolver isso sem usá-los, se for possível.<br>
&gt; &gt; Se uso as duas classes num único arquivo, funciona, mas minha intenção é<br>&gt; &gt; usar uma classe externa, que pode variar conforme a necessidade.<br>&gt; &gt;<br>&gt; &gt; Mais uma vez, obrigado.<br>&gt; &gt;<br>
&gt; &gt; Tom<br>&gt; &gt;<br>&gt; &gt; Em 7 de dezembro de 2010 02:38, Daniel de Oliveira Mantovani<br>&gt; &gt; &lt;<a href="mailto:mantovani@perl.org.br" target="_blank">mantovani@perl.org.br</a>&gt; escreveu:<br>&gt; &gt;&gt;<br>
&gt; &gt;&gt; Abusando da lista, e mandando 1 milhão de e-mail na mesma thread, vou<br>&gt; &gt;&gt; deixar só a última recomendação,<br>&gt; &gt;&gt; <a href="http://en.wikipedia.org/wiki/Metaprogramming" target="_blank">http://en.wikipedia.org/wiki/Metaprogramming</a><br>
&gt; &gt;&gt;<br>&gt; &gt;&gt; Eu gostaria de falar muito mais sobre reflexão e introspecção, mas<br>&gt; &gt;&gt; preciso trabalhar.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Boa noite.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; 2010/12/7 Daniel de Oliveira Mantovani &lt;<a href="mailto:mantovani@perl.org.br" target="_blank">mantovani@perl.org.br</a>&gt;:<br>
&gt; &gt;&gt; &gt; Ops, esqueci de colocar o link do manual do Moose,<br>&gt; &gt;&gt; &gt; <a href="http://search.cpan.org/%7Edrolsky/Moose-1.21/lib/Moose/Manual.pod" target="_blank">http://search.cpan.org/~drolsky/Moose-1.21/lib/Moose/Manual.pod</a><br>
&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; Só para ficar mais claro, você pode usar toda a magia do Moose e ainda<br>&gt; &gt;&gt; &gt; abusar de reflexão e introspecção, com Class::Mop.<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; 2010/12/7 Daniel de Oliveira Mantovani &lt;<a href="mailto:mantovani@perl.org.br" target="_blank">mantovani@perl.org.br</a>&gt;:<br>
&gt; &gt;&gt; &gt;&gt; Perl é arte, você pode usar toda a magia do Moose e abusar de reflexão<br>&gt; &gt;&gt; &gt;&gt; e introspecção:<br>&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;&gt; use Some::Class;<br>&gt; &gt;&gt; &gt;&gt; use Class::MOP;<br>
&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;&gt; my $meta = Class::MOP::Class-&gt;initialize(&#39;Some::Class&#39;);<br>&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;&gt; for my $meth ( $meta-&gt;get_all_methods ) {<br>&gt; &gt;&gt; &gt;&gt;    print $meth-&gt;fully_qualified_name, &quot;\n&quot;:<br>
&gt; &gt;&gt; &gt;&gt; }<br>&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;&gt; 2010/12/7 Daniel de Oliveira Mantovani &lt;<a href="mailto:mantovani@perl.org.br" target="_blank">mantovani@perl.org.br</a>&gt;:<br>
&gt; &gt;&gt; &gt;&gt;&gt; 2010/12/7 Tom Mostard &lt;<a href="mailto:capmostarda@gmail.com" target="_blank">capmostarda@gmail.com</a>&gt;:<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Colegas,<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Alguém sabe como carregar uma classe que não foi carregada com &quot;use&quot;<br>
&gt; &gt;&gt; &gt;&gt;&gt;&gt; através<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; de reflexão computacional?<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; package Foo;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; sub new { return bless {}, shift }<br>
&gt; &gt;&gt; &gt;&gt;&gt; sub method { my $self = shift; print &quot;Work!\n&quot; }<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; 1;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; package main;<br>
&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; my ( $class, $method ) = ( &#39;Foo&#39;, &#39;method&#39; );<br>&gt; &gt;&gt; &gt;&gt;&gt; $class-&gt;new-&gt;$method;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt;&gt; __END__<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; Outro exemplo, <a href="http://nopaste.snit.ch/26735" target="_blank">http://nopaste.snit.ch/26735</a><br>
&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Sei que Perl suporta, mas não estou conseguindo implementar.<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Exemplo:<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt;&gt;&gt; my $class  = &quot;Foo&quot;;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; my $method = &quot;hello&quot;;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; my $object = $class-&gt;new();<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; $object-&gt;$method(); // que e o mesmo que $object-&gt;hello();<br>
&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Implementei a classe Foo, e salvei no mesmo diretório como Foo.pm<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Preciso usar o EXPORT ou coisa assim?<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt;&gt; Não, você não precisa do Export. Você pode usar &quot;do&quot; ou  &quot;require&quot;.<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; package main;<br>&gt; &gt;&gt; &gt;&gt;&gt; use strict;<br>
&gt; &gt;&gt; &gt;&gt;&gt; use warnings;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; my %cm = (qw/Foo read Bar people Baz should/);<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; foreach my $class ( ( sort keys %cm ) ) {<br>
&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;    require $class;<br>&gt; &gt;&gt; &gt;&gt;&gt;    my $method = $cm{$class};<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;    $class-&gt;new-&gt;$method;<br>
&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; }<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; Uma das utilidades do &quot;require&quot;, é quando você precisa carregar um<br>&gt; &gt;&gt; &gt;&gt;&gt; módulo em tempo de execução, que é o seu caso.<br>
&gt; &gt;&gt; &gt;&gt;&gt; Na verdade, tanto &quot;use&quot; como &quot;require&quot; usam o &quot;do&quot;. Ambos são uma<br>&gt; &gt;&gt; &gt;&gt;&gt; abstração.<br>&gt; &gt;&gt; &gt;&gt;&gt; <a href="http://perldoc.perl.org/functions/do.html" target="_blank">http://perldoc.perl.org/functions/do.html</a><br>
&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; O erro que tenho é o seguinte:<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt;&gt;&gt; Can&#39;t locate object method &quot;new&quot; via package &quot;Foo&quot; (perhaps you<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; forgot to<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; load &quot;Foo&quot;?) at ./<a href="http://main.pl" target="_blank">main.pl</a> line 10.<br>
&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Mas se eu uso o &quot;use Foo&quot; funciona.<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Abraços,<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt;&gt;&gt; Tom<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; _______________________________________________<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; Cascavel-pm mailing list<br>&gt; &gt;&gt; &gt;&gt;&gt;&gt; <a href="mailto:Cascavel-pm@pm.org" target="_blank">Cascavel-pm@pm.org</a><br>
&gt; &gt;&gt; &gt;&gt;&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;&gt; --<br>&gt; &gt;&gt; &gt;&gt;&gt; &quot;If you’ve never written anything thoughtful, then you’ve never had<br>&gt; &gt;&gt; &gt;&gt;&gt; any difficult, important, or interesting thoughts. That’s the secret:<br>
&gt; &gt;&gt; &gt;&gt;&gt; people who don’t write, are people who don’t think.&quot;<br>&gt; &gt;&gt; &gt;&gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;&gt; --<br>
&gt; &gt;&gt; &gt;&gt; &quot;If you’ve never written anything thoughtful, then you’ve never had<br>&gt; &gt;&gt; &gt;&gt; any difficult, important, or interesting thoughts. That’s the secret:<br>&gt; &gt;&gt; &gt;&gt; people who don’t write, are people who don’t think.&quot;<br>
&gt; &gt;&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; --<br>&gt; &gt;&gt; &gt; &quot;If you’ve never written anything thoughtful, then you’ve never had<br>&gt; &gt;&gt; &gt; any difficult, important, or interesting thoughts. That’s the secret:<br>
&gt; &gt;&gt; &gt; people who don’t write, are people who don’t think.&quot;<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; --<br>&gt; &gt;&gt; &quot;If you’ve never written anything thoughtful, then you’ve never had<br>
&gt; &gt;&gt; any difficult, important, or interesting thoughts. That’s the secret:<br>&gt; &gt;&gt; people who don’t write, are people who don’t think.&quot;<br>&gt; &gt;&gt; _______________________________________________<br>
&gt; &gt;&gt; Cascavel-pm mailing list<br>&gt; &gt;&gt; <a href="mailto:Cascavel-pm@pm.org" target="_blank">Cascavel-pm@pm.org</a><br>&gt; &gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; _______________________________________________<br>&gt; &gt; Cascavel-pm mailing list<br>&gt; &gt; <a href="mailto:Cascavel-pm@pm.org" target="_blank">Cascavel-pm@pm.org</a><br>&gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
&gt; &gt;<br>&gt; <br>&gt; <br>&gt; <br>&gt; -- <br>&gt; &quot;If you’ve never written anything thoughtful, then you’ve never had<br>&gt; any difficult, important, or interesting thoughts. That’s the secret:<br>&gt; people who don’t write, are people who don’t think.&quot;<br>
&gt; _______________________________________________<br>&gt; Cascavel-pm mailing list<br>&gt; <a href="mailto:Cascavel-pm@pm.org" target="_blank">Cascavel-pm@pm.org</a><br>&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
</div></div></div>                                               </div>
<br>_______________________________________________<br>
Cascavel-pm mailing list<br>
<a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></blockquote></div><br>