---
name: "Symbol::Get"
section: "3pm"
platform: "linux"
package: "libsymbol-get-perl"
version: "0.12-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Symbol::Get"
---

# Symbol::Get(3pm)

Read Perl’s symbol table programmatically

## 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');    # \$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

- •

  Symbol::Values

## LICENSE

This module is licensed under the MIT License.
