这个问题与this one.
你说这两个是一样的:
${ "::_<$filename" } # Not allowed under strict.
${ "_<$filename" } # In main package # Not allowed under strict.
但接下来怎么可能呢?
if( ${ "_<$filename" } ne ${ "::_<$filename" } ) {
print "MISMATCH\n";
print ">>${ '_<$filename' }<<\n>>${ '::_<$filename' }<<\n";
}
output:
MISMATCH
>><<
>><<
这发生在$filename
is /home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm
UPD
with "
引用为@HåkonHægland
建议
print "MISMATCH\n";
print ">>${ \"_<$filename\" }<<\n>>${ \"::_<$filename\" }<<\n";
Devel::Peek::Dump( ${ "_<$filename" } );
Devel::Peek::Dump( ${ "::_<$filename" } );
Devel::Peek::Dump( ${ $::{"_<$filename"} } );
Devel::Peek::Dump( ${ ${'::'}{"_<$filename"} } );
输出是:
MISMATCH
>><<
>>/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm<<
SV = PV(0xfb84520) at 0xff527a0
REFCNT = 1
FLAGS = ()
PV = 0
SV = PV(0x2e43d80) at 0x2f40400
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x2edc4a0 "/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm"\0
CUR = 111
LEN = 113
COW_REFCNT = 0
SV = PV(0x2e43d80) at 0x2f40400
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x2edc4a0 "/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm"\0
CUR = 111
LEN = 113
COW_REFCNT = 0
SV = PV(0x2e43d80) at 0x2f40400
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x2edc4a0 "/home/kes/work/projects/tucha/monkeyman/app/maitre_d/../..//local/lib/perl5/Specio/Constraint/Role/Interface.pm"\0
CUR = 111
LEN = 113
COW_REFCNT = 0
从输出中我们可以看到主题变量是不同的:
SV = PV(0xfb84520) at 0xff527a0
SV = PV(0x2e43d80) at 0x2f40400