Am 10.12.2010 schrub Bolhar-Nordenkampf Ferdinand: > Hi, > >> SV* perl_get_sv("package::varname", FALSE); >> >> This returns NULL if the variable does not exist. >> >> If you want to know if this variable (or any other SV) is actually >> defined, you can call: >> >> SvOK(SV*) > > Note that this works for global (package) variables only. > > Is there a similar way to access lexical variables?
I doubt it. I've had a look at http://perl.plover.com/FAQs/Namespaces.html and it says that there's no way to access a lexical variable that way. However, having read that and since I'd like to use this to configure a timeout value for a SCSI package, I think the best, and cleanest, approach is to have a package variable and maybe even make that private to the package and allow access only via an oo-style sub: sub timeout { my ($new_timeout) = @_; my $old_timeout = $timeout; if (defined $new_timeout) { # Maybe also check that there's only one parameter if ($new_timeout =~ /^\d+$/) { $timeout = $new_timeout; } } return $old_timeout; } -- These are my personal views and not those of Fujitsu Technology Solutions! Josef Möllers (Pinguinpfleger bei FTS) If failure had no penalty success would not be a prize (T. Pratchett) Company Details: http://de.ts.fujitsu.com/imprint.html