my $symbol_table = *{"main::Example::Package::"}{HASH}; #### my $symbol_table = \%Example::Package::; #### my $symbol_table = \%{__PACKAGE__ . '::'}; #### print "", Dumper($symbol_table), "\n"; #### my %subs = %{__PACKAGE__ . '::'}; *{$_}{CODE} or delete $subs{$_} for keys %subs; #### my %subs = map { $_ => *{$_}{CODE} } grep *{$_}{CODE}, keys %{__PACKAGE__ . '::'}; #### my %subs; while ( my ($k,$v)=each %{__PACKAGE__ . '::'} ) { $subs{$k}=$v if *{$v}{CODE}; } #### my @subs = grep *{$_}{CODE}, keys %{__PACKAGE__ . '::'}; #### package Example::Package; use strict; use warnings; use Data::Dumper; use constant foo => 1; BEGIN { no strict 'refs'; my %subs = map {$_ => 1} grep *{$_}{CODE}, keys %{__PACKAGE__ . '::'}; sub added_subs () { grep *{$_}{CODE} && !$subs{$_}, keys %{__PACKAGE__ . '::'}; } } use constant { bar => 2, baz => 3 }; print Dumper [added_subs]; __END__