On Wednesday, Nov 19, 2003, at 06:38 US/Pacific, Haim Ashkenazi wrote:
Hi
I'm writing a module to serve a script I'm writing and I was wondering if
it's possible to add a constant to the @EXPORT array. I prefer not to use
variables because these settings shouldn't be changed, but I want every
script that uses this module to be able to access these constants.
I read somewhere that you can declare your constants like this: *BLAH = \"blah blah"; and then export $BLAH.
I tested it and it works, but I wanted to know if that's a good way of doing
it, or there's a better one in terms of speed and memory usage.
well first off do you mean
use constant MY_CONSTANT => 82 ; # capitalizing them can help ID them.
{ cf. perldoc constant }
which is how I put them into a production perl module.
Then think in terms of whether you want to have them always exported, eg @EXPORT, or can you 'bundle' them in %EXPORT_TAGS eg:
our %EXPORT_TAGS = ( 'all' => [ qw( .... ) ], 'constants' => [ qw(....) ], .... );
This way if some of the constants natively cluster with some of the functions, then you can think in terms of and code the 'traditional' form of
bail_out($thing,$poo,$err_num) if( my_got_error($that_return) == MY_CONSTANT );
which while 'traumatizing' some of the "c-coders" could be 'repositioned' for them as
if( my_got_error($that_return) == MY_CONSTANT ) { bail_out($thing,$poo,$err_num); }
Is that the sort of idea that you are looking at? or would the 'accessor' method be more interesting?
sub get_my_constant { MY_CONSTANT ; }
so that you could have
if ( $obj->my_got_error($that_return) == $obj->get_my_constant() ) { bail_out($thing,$poo,$err_num); }
HTH.
ciao drieux
---
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]