Alla fine ho optato per un banalissimo oggetto che mi incapsula tutti gli innumerevoli metodi che prima avevo bisogno di esportarlo. Utilizzando Class::Accessor mi sono evitato la "fatica" ;-) di creare il metodo new e quindi alla fine ho ottenuto comunque un risparmio di codice da scrivere.<br>
<br><br><div class="gmail_quote">Il giorno 3 aprile 2009 22.01, Valerio Crini <span dir="ltr"><<a href="mailto:vcrini@gmail.com">vcrini@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Innanzi tutto grazie ad entrambi per la risposta celere ed esauriente, <br><br>Ho provato ad utilizzare la strada quella dell'utilizzo di Exporter::Simple, Export::Lexical ma entrambi non mi funzionano e non capisco perchè. Vi porto alcuni esempi:<br>
<br>dato il package <br> Dnd::Utils::Codes<br><br>così fatto<br><br>#!/usr/bin/perl<br>package Dnd::Utils::Codes;<br>use strict;<br>use warnings;<br>use base 'Exporter::Simple';<br><br>use version;<br>our $VERSION = qv('0.1');<br>
<br><br>sub W_USAGE : Exported(codes) {<br> return 'usage';<br>}<br>1;<br><br>e utilizzandolo in <br><br>#!/usr/bin/perl<br>use strict;<br>use warnings;<br>use Dnd::Utils::Codes;<br><br>print W_USAGE();<br><br>
<br>mi funziona<br>ovvero mi stampa un favoloso <br><br>'usage'<br><br>MA <br><br>se lo lancio in un file fatto così<br><br>#!/usr/bin/perl<br><br>use strict;<br>use warnings;<br>use Dnd::Fourth::Power;<br><br>my $power = Dnd::Fourth::Power->new();<br>
$power->print;<br><br><br>che a sua volta si appoggia sulla classe<br><br>package Dnd::Fourth::Power;<br>use strict;<br>use warnings;<br>use Dnd::Utils::Codes ;<br><br>sub new {<br> my $class = shift;<br> my $init = shift;<br>
my $self = {};<br> bless $self, $class;<br> return $self;<br>}<br><br><br>sub print {<br> my $self=shift;<br> print W_USAGE();<br>}<br><br><br>1;<br><br>mi da un fantastico <br><br>Undefined subroutine &Dnd::Fourth::Power::W_USAGE called at Dnd/Fourth/Power.pm line 17.<br>
<br><br>Secondo voi come mai?<br><br>Ovviamente avrete immaginato che il mio programma per come è strutturato è fatto un modo da dare l'errore ...<br><br><br><div class="gmail_quote">Il giorno 31 marzo 2009 18.45, Oha <span dir="ltr"><<a href="mailto:oha@oha.it" target="_blank">oha@oha.it</a>></span> ha scritto:<div>
<div></div><div class="h5"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>>Sfogliano CPAN, trovo per esempio Export::Lexical - non sono >sicuro che era quello a cui pensavo (quindi magari cerca >ancora su <a href="http://search.cpan.org" target="_blank">search.cpan.org</a>), cmq, usando questo puoi fare<br>
> sub sub1 : ExportLexical { ... }<br>
<br>
</div>equivale a Exporter::Simple da cui pasto un pezzo di synopsis:<br>
sub hello : Exported(greet,uk) { "hello there" }<br>
sub askme : Exportable { "what you will" }<br>
sub hi : Exportable(greet,us) { "hi there" }<br>
<br>
mi sembra inoltre che quest'ultimo sia piu' stabile/testato<br>
<br>
Oha<br>
<br>
<br>
_______________________________________________<br>
Firenze-pm mailing list<br>
<a href="mailto:Firenze-pm@pm.org" target="_blank">Firenze-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/firenze-pm" target="_blank">http://mail.pm.org/mailman/listinfo/firenze-pm</a><br>
</blockquote></div></div></div><br>
</blockquote></div><br>