Hi folks, 

I'm trying to move my debug and validate modules to a seperate package.  
However, I'm having trouble.  I've created a new empty module/package direct 
from the perldocs and then put my debug routine in.  So far, so good.

I then created my program to use it, but I'm having trouble accessing the 
%_DEBUG hash in main::.  The idea is that when I want to use debug, I create 
my hash, use the module, and it accesses my hash.  As you can see, it's not 
working. I'm assuming that the problems with the syntax I'm using to access 
%{$package}::_DEBUG.

package Trainset::Utils;

use strict;
use warnings;

BEGIN {

  use Exporter;
  our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
  $VERSION='0.1';
  @ISA=qw{Exporter};
  @EXPORT = qw(&debug &validate);
  @EXPORT_OK = qw(&debug &validate);
  %EXPORT_TAGS=();
}

sub debug {        # return debug info
  my $caller=(caller(1))[3];
  my $package='';
  print "caller=$caller\n";
  ($package,$caller)=split('::',$caller);
  print "package=$package caller=$caller\n";
  print "key=$_\n" foreach (keys %package::_DEBUG);
  return (defined $package::_DEBUG{$caller}) ? $package::_DEBUG{$caller} : 0;
};

1;

#!/usr/bin/perl -w

use strict;

use lib ".";
use Trainset::Utils;

our %_DEBUG=(one=>1,mysub=>2);

my $resp=debug();
print "resp=$resp\n";

$resp=mysub();
print "resp=$resp\n";


sub mysub () {
  return debug();
}

[EMAIL PROTECTED] trainset]$ ./t
main::mysub() called too early to check prototype at ./t line 13.
Use of uninitialized value in concatenation (.) or string at Trainset/Utils.pm 
line 20.
caller=
Use of uninitialized value in split at Trainset/Utils.pm line 21.
Use of uninitialized value in concatenation (.) or string at Trainset/Utils.pm 
line 22.
Use of uninitialized value in concatenation (.) or string at Trainset/Utils.pm 
line 22.
package= caller=
Use of uninitialized value in hash element at Trainset/Utils.pm line 24.
resp=0
caller=main::mysub
package=main caller=mysub
resp=0
[EMAIL PROTECTED] trainset]$
-- 
Gary Stainburn
 
This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000     


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to