NAME
Symbol::Get - Read Perl’s symbol table programmatically
SYNOPSIS
package
Foo;
our
$name
=
'haha'
;
our
@list
= ( 1, 2, 3 );
our
%hash
= (
foo
=> 1,
bar
=> 2 );
sub
doit { ... }
my
$name_sr
= Symbol::Get::get(
'$Foo::name'
);
# \$name
my
$list_ar
= Symbol::Get::get(
'@Foo::list'
);
# \@list
my
$hash_hr
= Symbol::Get::get(
'%Foo::hash'
); $ \
%hash
#Defaults to __PACKAGE__ if none is given:
my
$doit_cr
= Symbol::Get::get(
'&doit'
);
#Constants:
my
$const_val
= Symbol::Get::copy_constant(
'Foo::my_const'
);
my
@const_list
= Symbol::Get::copy_constant(
'Foo::my_const_list'
);
#The below return the same results since get_names() defaults
#to the current package if none is given.
my
@names
= Symbol::Get::get_names(
'Foo'
);
# keys %Foo::
my
@names
= Symbol::Get::get_names();
DESCRIPTION
Occasionally I have need to reference a variable programmatically. This module facilitates that by providing an easy, syntactic-sugar-y, read-only interface to the symbol table.
The SYNOPSIS above should pretty well cover usage.
ABOUT PERL CONSTANTS
Previous versions of this module endorsed constructions like:
my
$const_sr
= Symbol::Get::get(
'Foo::my_const'
);
my
$const_ar
= Symbol::Get::get(
'Foo::my_const_list'
);
… to read constants from the symbol table. This isn’t reliable across Perl versions, though, so don’t do it; instead, use copy_constant()
.
SEE ALSO
LICENSE
This module is licensed under the MIT License.