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

Reply via email to