Hi Hans,

Hans Dieter Pearcey wrote:
> On Fri, Nov 28, 2008 at 12:17:29PM +0900, Raymond Wan wrote:
>   
>> What I have now is:
>>
>> {
>>   package HTML::Mason::Commands;
>>   use MyUtils;
>> }
>>
>> May I ask what is the purpose of these parentheses?  I know they limit 
>> scope, so its purpose is to incorporate "MyUtils" into the package 
>> HTML::Mason::Commands only and not affect anything else in my handler 
>> file (i.e., the file that my handler is in)?
>>     
>
> Yes.  I used the {} because I didn't know what else was in your handler file,
> and that was the easiest way to limit the scope of my suggestion.
>
> Instead of 'incorporate', it would be more common to say that the purpose is 
> to
> import MyUtils into HTML::Mason::Commands.  See perldoc Exporter, which then
> points to perlfunc and perlmod.  Nothing here is magic; it's just copying
> functions into a new package for You.  you could get the same effect by hand 
> if
> you did something like this:
>
>   # assuming MyUtils exports myfunction and otherfunction, eg. with
>   # Exporter, Sub::Exporter, manually, whatever
>   *HTML::Mason::Commands::myfunction = \&MyUtils::myfunction;
>   *HTML::Mason::Commands::otherfunction = \&MyUtils::otherfunction;
>
> Of course, that's tedious and error-prone, which is why you write 'use 
> MyUtils'
> instead, but it helps answer your other question:
>   


I see.  Thank you for answering my question so well, despite it not 
being a Mason question. 

Your answer means that if there already is a function called 
"myfunction" in HTML::Mason::Commands, I'll either have a conflict or 
lose access to it?

And I guess assignment is not a laborious process, but does this mean 
that the assignment is done every time a request is made?  Or is each 
Perl process smart enough to know when the above has been done to 
HTML::Mason::Commands before?  My module is not very big, but just to 
satisfy my curiosity, I wonder if there is a potential performance hit 
each time a user makes a request?


>> how do I decide whether they should also be included in or does it not 
>> matter?
>>     
>
> If they export functions that you want to be usable directly from your
> components (that is, as 'foo()' instead of 'Some::Package::foo()'), they need
> to be 'use'd while inside the HTML::Mason::Commands package.  Otherwise they
> don't.
>   

Ah, I see -- makes sense; thank you!

Ray



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Mason-users mailing list
Mason-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mason-users

Reply via email to