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 );use constant my_const => 'haha';use constant my_const_list => qw( a b c );sub doit { ... }my $name_sr = Symbol::Get::get('$Foo::name'); # \$namemy $list_ar = Symbol::Get::get('@Foo::list'); # \@listmy $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
- •
-
Symbol::Values
LICENSE
This module is licensed under the MIT License.