Этот вопрос принадлежит этому и этому
@ ikegami говорит:
Мы установили, что следующее возвращаетПерейдите к символу в корневом / главном пространстве имен, имя которого создается с помощью "_<$filename"
$::{ "_<$filename" }
Мы также установили, что следующие ссылки ссылаются на скаляр в корне / основном имени, имя которого создается с помощью "_<$filename"
:
${ $::{ "_<$filename" } }
И, наконец, мы также установили, что ниже приводится символическая ссылка, которая ссылается на тот же скаляр:
${ "::_<$filename" }
При отладке моего приложения я пишу следующеекод в отладчике:
DB::say "EXISTS";
defined ${ 'main::' }{ "_<$filename" }? DB::say "YES" : DB::say "NO";
defined ${ "::_<$filename" }? DB::say "YES" : DB::say "NO";
if( ${ 'main::' }{ "_<$filename" } ne ${ "::_<$filename" } ) {
print "MISMATCH\n";
print "$filename\n";
print ${ 'main::' }{ "_<$filename" }, "\n",
defined ${ 'main::' }{ "_<$filename" }, "\n",
${ "::_<$filename" }, "\n",
defined ${ "::_<$filename" }, "\n";
Devel::Peek::Dump( ${ ${ 'main::' }{ "_<$filename" } } );
Devel::Peek::Dump( ${ "::_<$filename" } );
Devel::Peek::Dump( ${ $::{"_<$filename"} } );
Devel::Peek::Dump( ${ ${'::'}{"_<$filename"} } );
}
Вывод:
EXISTS
YES
NO
MISMATCH
Specio::Constraint::Simple->_optimized_constraint
*main::_<Specio::Constraint::Simple->_optimized_constraint
1
SV = PV(0x14f6a30) at 0x184b200
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x1849990 "Specio::Constraint::Simple->_optimized_constraint"\0
CUR = 49
LEN = 51
SV = PV(0xe1f5f50) at 0xe5b9438
REFCNT = 1
FLAGS = ()
PV = 0
SV = PV(0x14f6a30) at 0x184b200
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x1849990 "Specio::Constraint::Simple->_optimized_constraint"\0
CUR = 49
LEN = 51
SV = PV(0x14f6a30) at 0x184b200
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x1849990 "Specio::Constraint::Simple->_optimized_constraint"\0
CUR = 49
LEN = 51
ВНИМАНИЕ: когда $filename
равно Specio::Constraint::Simple->_optimized_constraint
переменные различны :
$::{ "_<$filename" } # SV = PV(0xe1f5f50) at 0xe5b9438
${ $::{ "_<$filename" } } # SV = PV(0x14f6a30) at 0x184b200
но здесь (см. Раздел UPD), когда $filename
равно
/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm
переменные одинаковы :
$::{ "_<$filename" } # SV = PV(0x2e43d80) at 0x2f40400
${ $::{ "_<$filename" } } # SV = PV(0x2e43d80) at 0x2f40400