Thanks very much Bill - it works fine.

all the best,

Bill



-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: 25 October 2004 12:33
To: Bill Stennett
Cc: activeperl mailing list
Subject: Re: use strict and exporting values from modules



Bill Stennett wrote:
> Hi All
>
> Can some tell me the correct way to create a PERL module that exports some
> global configuration symbols which are used by orhter modules and programs
> and include the 'use strict' statement.
>
> The problem is that if I include the use strict; line in the module then I
> must declare all my symbols with my. If however I declare the symbols
using
> my the values do not export correctly. For example, if I define a module
as:
>
> #######################################
> #!/usr/bin/perl -w
>
> package mylib;
>
> use Exporter(); # use the exported module to handle exporting symbols
> @ISA = qw(Exporter);
> @EXPORT_OK = qw( $valuetoexport );
>
> $valuetoexport = 'abc';
>
> return 1;
> ########################################

Try this version (no shebang line needed on modules) :

package mylib;

use strict;
use Exporter(); # use the exported module to handle exporting symbols

our @ISA = qw(Exporter);
our @EXPORT_OK = qw($valuetoexport);

our $valuetoexport = 'abc';

1;

> and access the value in a program as follows:
>
> ########################################
> #!/usr/bin/perl -w
> use strict;
> use mylib qw ($valuetoexport);
> print "$valuetoexport\n";
> ########################################
>
> then the value is passed to the importing program correctly. There is a
> warning when the the 'mylib' module compiles saying that '$valuetoexport
is
> used only once possibly a typo'.
>
> I want to include 'use strict' in the module definition but if I do that
> then @ISA, @EXPORT_OK and $valuetoexport are all thrown out as needing a
> package name. I tried including @ISA and @EXPORT_OK in a use vars
statement
> and declaring $valuetoexport with 'my' but I could not get the value to
> export.
>
> I suppose I could wrap the variables I wish to export into function calls
in
> an OO style of approach. Any suggestions much appreciated.



--
  ,-/-  __      _  _         $Bill Luebkert    Mailto:[EMAIL PROTECTED]
 (_/   /  )    // //       DBE Collectibles    Mailto:[EMAIL PROTECTED]
  / ) /--<  o // //      Castle of Medieval Myth & Magic
http://www.todbe.com/
-/-' /___/_<_</_</_    http://dbecoll.tripod.com/ (My Perl/Lakers stuff)


_______________________________________________
ActivePerl mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to