Import/export af variable på tværs af pakker
Jeg prøver at lave en package Data som skal håndtere al min kommunikation med CGI.pm og DBI.pm moduletDe forskellige moduler jeg så har skal kunne kalde de 2 instances som jeg opretter i Data.pm med
my $dbh = DBI->connect("DBI:mysql:$Config::dbDb:$Config::dbServer",$Config::dbUser,$Config::dbPwd) |||| DBI->disconnect($DBI::errstr);
my $cgih = CGI->new() |||| croak(''No CGI'');
Jeg vil ikke have at de bliver gemt væk i en new() metode, da jeg så får forskellige instances af CGI (og dermed kan de ikke bruges som "fælles hukommelse")
Spørgsmålet går så ud på, hvordan får jeg exporteret netop disse 2 variable fra Data.pm og hvordan importerer jeg dem ind i en pakke Foo''s namespace?
Kodestumper:
package Data;
use Carp;
use CGI;
use DBI;
require "./config.pm";
my $Debugging = 0;
use strict;
BEGIN {
use Exporter ();
use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter);
@EXPORT = qw($dbh $cgih);
# your exported package globals go here,
# as well as any optionally exported functions
}
my $dbh = DBI->connect("DBI:mysql:$Config::dbDb:$Config::dbServer",$Config::dbUser,$Config::dbPwd) |||| DBI->disconnect($DBI::errstr);
my $cgih = CGI->new() |||| croak(''No CGI'');
[...]
og så ovre i selve programmet:
#!/usr/bin/perl
use Data;
use strict;
BEGIN { $Exporter::Verbose=1 }
my $url = $cgih->url();
[....]
Den sidste linie fejler, da $cgih ikke er importeret korrekt. Men hvad skal jeg gøre?