Dan Muey wrote: > Thanks for the reply! > > > Sorry I don't understand your question well, but from > > overall, I guess that's all about what you want... > > I'll try to make it simpler, I have a tendency to ramble! > > I've seen packages that have a variable like $Package::Error or > $Package::errstr > > I want a funtion in that package to return 1 on success or 0 on > failure but if it is 0 I want to have the reason why it failed so I > give $Package::Error a value.
OK, fine. > > #Main.pl > > use Package; # which exports the variable $Package::Error and the > function function() No. You should't export it. "Exporting" means making an "alias" to the variable in the package that issues the "use". If you refer to the variable as $Package::Error, you don't need to export it. If you export it, you would refer to it as simply $Error. But that might interfere with the main program's use of $Error in some other context. You can put $Error in the @EXPORT_OK array, which gives the main program the *option* to import the symbol if the author chooses. > > if(!function()) { print "It failed and here is why - > $Package::Error"; } else { print "It worked oh happy days"; } Yes, that's fine. > > # or after executing function() > > if($Package::Error) { print "It failed and here is why - > $Package::Error"; } else { print "It worked oh happy days"; } > > #Package.pm > > package Package; > ... Export $Package:Error and function() > my $Package::Error; No. You can't access "my" variables outside this file. It should be a global: our $Error; > > sub function { > undef $Package::Error; # in case it was given a value earlier in the Since you're in package Package, you don't need to qualify this. You can just use $Error throughout. > script my $r = 1; # unless it fails return 1 > if(it failed to work) { > $r = 0; # it failed so return 0 > $Package::Error = "IT failed because ...."; # > set the reason why into the Erro Variable Same as above. > } > return $r; > } Example: Foo.pm: package Foo; use strict; use base qw/Exporter/; our $Error; our @EXPORT_OK = qw/bar $Error/; sub bar { undef $Error; my $aligned = 0; $Error = "Frobnitz misaligned", return unless $aligned; 1; } 1; main.pl #!/usr/bin/perl -w use strict; use Foo qw/bar/; bar() or die $Foo::Error; -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]