package
rperlnames;
our
$VERSION
= 0.001_010;
1;
sub
name {
{
my
string
$RETURN_TYPE
};
my
unknown
$input_variable_ref
= \
$_
[0];
my
hashref
$pad
= peek_my 1;
for
my
string
$name
(
keys
%{
$pad
} ) {
if
(
$pad
->{
$name
} ==
$input_variable_ref
) {
return
$name
; }
}
$pad
= peek_our 1;
for
my
string
$name
(
keys
%{
$pad
} ) {
if
(
$pad
->{
$name
} ==
$input_variable_ref
) {
return
$name
; }
}
my
string_arrayref_arrayref
$sigil_reftypes
= [
[
'$'
,
'SCALAR'
],
[
'@'
,
'ARRAY'
],
[
'%'
,
'HASH'
],
[
'&'
,
'CODE'
]
];
foreach
my
string
$namespace
(
(
caller
() .
'::'
),
sort
keys
%{ rperlnamespaces::hash_noncore_nonrperl() }
)
{
$pad
=
do
{
no
strict
'refs'
; \%{
$namespace
} };
for
my
string
$name
(
keys
%{
$pad
} ) {
if
( (
ref
\
$pad
->{
$name
} ) ne
'GLOB'
) {
next
; }
for
my
string_arrayref
$sigil_reftype
( @{
$sigil_reftypes
} ) {
my
string
$variable_ref
= *{
$pad
->{
$name
} }{
$sigil_reftype
->[1] };
if
( (
defined
$variable_ref
)
and (
$variable_ref
==
$input_variable_ref
) )
{
return
(
$sigil_reftype
->[0] .
$namespace
.
$name
);
}
}
}
}
return
'$__NO_VARIABLE_NAME_FOUND'
;
}
sub
scope_type_name_value {
{
my
string
$RETURN_TYPE
};
my
unknown
$input_variable_ref
= \
$_
[0];
my
string
$type
= type( ${
$input_variable_ref
} );
my
string
$value
= to_string( ${
$input_variable_ref
} );
my
hashref
$pad
= peek_my 1;
for
my
string
$name
(
keys
%{
$pad
} ) {
if
(
$pad
->{
$name
} ==
$input_variable_ref
) {
return
(
'my'
.
q{ }
.
$type
.
q{ }
.
$name
.
q{ = }
.
$value
.
q{;}
);
}
}
$pad
= peek_our 1;
for
my
string
$name
(
keys
%{
$pad
} ) {
if
(
$pad
->{
$name
} ==
$input_variable_ref
) {
return
(
'our'
.
q{ }
.
$type
.
q{ }
.
$name
.
q{ = }
.
$value
.
q{;}
);
}
}
my
string_arrayref_arrayref
$sigil_reftypes
= [
[
'$'
,
'SCALAR'
],
[
'@'
,
'ARRAY'
],
[
'%'
,
'HASH'
],
[
'&'
,
'CODE'
]
];
foreach
my
string
$namespace
(
(
caller
() .
'::'
),
sort
keys
%{ rperlnamespaces::hash_noncore_nonrperl() }
)
{
$pad
=
do
{
no
strict
'refs'
; \%{
$namespace
} };
for
my
string
$name
(
keys
%{
$pad
} ) {
if
( (
ref
\
$pad
->{
$name
} ) ne
'GLOB'
) {
next
; }
for
my
string_arrayref
$sigil_reftype
( @{
$sigil_reftypes
} ) {
my
string
$variable_ref
= *{
$pad
->{
$name
} }{
$sigil_reftype
->[1] };
if
( (
defined
$variable_ref
)
and (
$variable_ref
==
$input_variable_ref
) )
{
return
(
$sigil_reftype
->[0]
.
$namespace
.
$name
.
q{ = }
.
$value
.
q{; # }
.
$type
);
}
}
}
}
return
$type
.
' $__NO_VARIABLE_NAME_FOUND = '
.
$value
;
}
1;