```{index} single: sub_util_subname; List::Util function ``` ```{index} single: List::Util::sub_util_subname; Perl function ``` # sub_util_subname Return the fully qualified name of a subroutine reference. ## Synopsis ```perl use Sub::Util qw(subname); my $name = subname \&some_sub; # 'Pkg::some_sub' my $name = subname sub { 1 }; # 'main::__ANON__' ``` ## What you get back A string of the form `"Package::name"`. Anonymous subroutines produce `"Package::__ANON__"`. If the subroutine has been renamed with `set_subname`, the new name is returned. Passing something that is not a code reference croaks with `Not a subroutine reference`. ## Examples ```perl package My::Pkg; sub hello { 1 } print Sub::Util::subname(\&hello); # 'My::Pkg::hello' ``` ## Differences from upstream Fully compatible with upstream. ## See also - `set_subname` — rename a code reference (useful for stack traces).