【发布时间】:2012-08-01 21:53:55
【问题描述】:
看起来 main 中有一个名为 '_<-'(不带引号)的符号,其方式与 看起来像它们可能是句柄的其他事物相同:例如,'_</usr/perl/lib/Carp.pm' .
有什么方法可以使用吗?
如果我希望读取输入源,我是否必须使用源过滤器?
回复 mob:我不知道 Debug 会在哪里打开。在我转储基表后,%INC 转储显示:
$VAR1 = {
'warnings/register.pm' => 'C:/strawberry/perl/lib/warnings/register.pm',
'XSLoader.pm' => 'C:/strawberry/perl/lib/XSLoader.pm',
'English.pm' => 'C:/strawberry/perl/lib/English.pm',
'Tie/Hash/NamedCapture.pm' => 'C:/strawberry/perl/lib/Tie/Hash/NamedCapture.pm',
'unicore/lib/Perl/_PerlIDS.pl' => 'C:/strawberry/perl/lib/unicore/lib/Perl/_PerlIDS.pl',
'unicore/Heavy.pl' => 'C:/strawberry/perl/lib/unicore/Heavy.pl',
'warnings.pm' => 'C:/strawberry/perl/lib/warnings.pm',
'utf8.pm' => 'C:/strawberry/perl/lib/utf8.pm',
'Config.pm' => 'C:/strawberry/perl/lib/Config.pm',
'overloading.pm' => 'C:/strawberry/perl/lib/overloading.pm',
'Symbol.pm' => 'C:/strawberry/perl/lib/Symbol.pm',
'Carp.pm' => 'C:/strawberry/perl/lib/Carp.pm',
'bytes.pm' => 'C:/strawberry/perl/lib/bytes.pm',
'Exporter/Heavy.pm' => 'C:/strawberry/perl/lib/Exporter/Heavy.pm',
'utf8_heavy.pl' => 'C:/strawberry/perl/lib/utf8_heavy.pl',
'strict.pm' => 'C:/strawberry/perl/lib/strict.pm',
'Exporter.pm' => 'C:/strawberry/perl/lib/Exporter.pm',
'vars.pm' => 'C:/strawberry/perl/lib/vars.pm',
'constant.pm' => 'C:/strawberry/perl/lib/constant.pm',
'Errno.pm' => 'C:/strawberry/perl/lib/Errno.pm',
'overload.pm' => 'C:/strawberry/perl/lib/overload.pm',
'Data/Dumper.pm' => 'C:/strawberry/perl/lib/Data/Dumper.pm'
};
【问题讨论】:
-
我已经更新了我的答案,以展示如何在没有源过滤器的情况下读取源文件,无论源文件是否具有
__DATA__段。 -
谢谢,@DavidO。我将在编译时测试它是如何工作的。
-
几天后跟进,看看我提供的解决方案是否适合您。
-
@DavidO,我还没有机会尝试一下。我想知道的一件事是它在编译期间是否有效?我以为我会自己提供这个答案,但我还是没有回过头来。
-
我已将解决方案封装在
BEGIN{ ... }块中。只要它的BEGIN块出现在任何其他调用read_source()的BEGIN块之前,是的,它可以在编译期间工作(如果您所说的“在编译期间工作”是“在 BEGIN 块中可用”)。