Hello ,

Hello!
I have a problem and can't get it how to solve it.
When I'm using 'use Module;' in if..elsif statement I've got situation when
all modules is included.
For example (from code snippets bellow) if I call edit_info it makes
My::Info and My::Setting to be used and I can't use global variables in
edit_info, only in last elsif statement (change_settings).
Use of global variables is critical for this code.

I tried in this way
eval ("use My::Info; &edit_info();");

It works, but in some strange manner, I need to reload page few times to
make it works, before that I see module export errors in log.


Can anyone suggest me someting?
I'll really appreciate any help.

main.cgi
=======================================================
#!/usr/bin/perl -w
package main;

use strict;
use CGI::Apache qw/:standard/;
use CGI::Cookie;
use Apache::DBI;

use lib qw (.);
use Rc::Config();

use vars qw(%cfg);
*cfg = \%Rc::Config::cfg;

use vars qw($dbh $q);

$q = new CGI;

if ($q->param('action') eq 'login')
  {
    &login();
  }
elsif ($q->param('action') eq 'edit_info')
  {
    use My::Info;
   &edit_info();
  }
elsif ($q->param('action') eq 'change_settings')
  {
    use My::Settings;
   &change_settings();
  }
========================================================

My::Info.pm
========================================================
package My::Info;
use strict;

use lib qw(../);

use Rc::Config();

use vars qw(%cfg);
*cfg = \%Rc::Config::cfg;

use Exporter;

use vars qw(@ISA @EXPORT @EXPORT_OK);


@ISA = qw(Exporter);
@EXPORT      = qw(edit_info $dbh $q);
@EXPORT_OK   = qw();

use vars qw($dbh $q);

sub edit_info
  {
     ..............................
  }
1;
========================================================
My::Settings.pm
========================================================
package My::Settings;
use strict;

use lib qw(../);

use Rc::Config();

use vars qw(%cfg);
*cfg = \%Rc::Config::cfg;

use Exporter;

use vars qw(@ISA @EXPORT @EXPORT_OK);


@ISA = qw(Exporter);
@EXPORT      = qw(change_settings $dbh $q);
@EXPORT_OK   = qw();

use vars qw($dbh $q);

sub change_settings
  {
     ..............................
   }
1;
  

-------------------------------------------
Sincerely yours,
Andrey A. Kudrin,
mailto:[EMAIL PROTECTED]


Reply via email to