sub GET_PACK::entrys { my ( $pack , %type ) = @_ ; if (! %type) { %type = qw($ 1 @ 1 % 1 & 1 :: 1) ;} local(*GET_PACK_tab) = eval("*$pack\::"); my @PACK ; foreach my $GET_PACK_Key ( sort keys %GET_PACK_tab ) { local(*GET_PACK_entry) = $GET_PACK_tab{$GET_PACK_Key}; if ( $type{'$'} && defined $GET_PACK_entry) { push(@PACK , "\$$GET_PACK_Key") ;} if ( $type{'@'} && defined @GET_PACK_entry) { push(@PACK , "\@$GET_PACK_Key") ;} if ( $type{'%'} && $GET_PACK_Key !~ /::$/ && defined %GET_PACK_entry) { push(@PACK , "\%$GET_PACK_Key") ;} if ( $type{'&'} && defined &GET_PACK_entry) { push(@PACK , "\&$GET_PACK_Key") ;} if ( $type{'::'} && $GET_PACK_Key =~ /::$/) { $GET_PACK_Key =~ s/:+$// ; push(@PACK , "$GET_PACK_Key\::") ; } } return( @PACK ) ; } #### sub test { print "Hello!\n" ;} my $test = 123 ; @l = GET_PACK::entrys('main' , '$' => 1 , '@' => 1 , '%' => 1 , '&' => 1 , '::' => 1 , ) ; foreach my $l_i ( sort @l ) { print "$l_i\n" ;}