Exporting Constants in Perl

Devin Whalen devin-Gq53QDLGkWIleAitJ8REmdBPR1lH4CV8 at public.gmane.org
Tue Jun 14 17:05:07 UTC 2005


Hey,

I have a module in Perl that has some constants that I want to export.
What is the proper syntax to do this?

Here is what I am doing:

package res_commandline;

BEGIN
{
        use Exporter ();
        use vars   qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
        # Set the Version Number of this Package for
        # Version Checking
        $VERSION = 0.01;
        @ISA    = qw(Exporter);
        #  Exported Routines below, with optional tags.
        @EXPORT = qw();
        %EXPORT_TAGS= (@EXPORT_OK);
        # Exported Global Variables. This at the minute should be none.
        @EXPORT_OK = qw( &logError &getDBParams &programCrash
&getEnvHash
TL_LOG_LOG TL_LOG_INFO TL_LOG_NOTICE TL_LOG_WARNING TL_LOG_ERROR
TL_LOG_CRASH
 );

}

use subs @EXPORT_OK;

#Global Variables
my $ERROR_LOG_DIR = "/var/log/talaria";
my $ERROR_LOG = "error_log";

use constant TL_LOG_LOG => 55;
use constant TL_LOG_INFO => 2;
use constant TL_LOG_NOTICE => 3;
use constant TL_LOG_WARNING => 4;
use constant TL_LOG_ERRROR => 5;
use constant TL_LOG_CRASH => 6;

#more module code here...


Then I do this in my file to use it:


#!/usr/bin/perl -w

use strict;
use DBI;

#import my functions and constants
use res_commandline qw(logError getDBParams programCrash TL_LOG_LOG
TL_LOG_INFO TL_LOG_NOTICE TL_LOG_WARNING TL_LOG_ERROR TL_LOG_CRASH);


use res_utils qw(doSQL); #import my sql function


print ("TL_LOG_LOG:".TL_LOG_LOG."\n");  #print out my constant


When I run this, it runs correctly but I get the following error
messages:
Prototype mismatch: sub res_commandline::TL_LOG_LOG vs ()
at /usr/local/lib/perl5/5.6.1/constant.pm line 91.
Prototype mismatch: sub res_commandline::TL_LOG_INFO vs ()
at /usr/local/lib/perl5/5.6.1/constant.pm line 91.
Prototype mismatch: sub res_commandline::TL_LOG_NOTICE vs ()
at /usr/local/lib/perl5/5.6.1/constant.pm line 91.
Prototype mismatch: sub res_commandline::TL_LOG_WARNING vs ()
at /usr/local/lib/perl5/5.6.1/constant.pm line 91.
Prototype mismatch: sub res_commandline::TL_LOG_CRASH vs ()
at /usr/local/lib/perl5/5.6.1/constant.pm line 91.


Is this because perl doesn't know that I am exporting constants?  Is
there a symbol I have to use, you know like $ for scalars or & for subs?
I have been looking through my books on perl and the web but I cannot
find a specific example of exporting a constant.

Thanks for any help.



-- 
Devin Whalen
Programmer
Synaptic Vision Inc
Phone-(416) 539-0801
Fax- (416) 539-8280
543 Richmond Street West
Toronto, Ontario
Suite 223 M5V 1Y6
Box 105
Home-(416) 653-3982


Take back the Web with FireFox....a browser you can trust
www.getfirefox.com

   .-.
   /v\    L   I   N   U   X
  // \\  
 /(   )\
  ^^-^^   

--
The Toronto Linux Users Group.      Meetings: http://tlug.ss.org
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://tlug.ss.org/subscribe.shtml





More information about the Legacy mailing list