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]



Reply via email to