Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl加载模块开始_Perl - Fatal编程技术网

Perl加载模块开始

Perl加载模块开始,perl,Perl,我有这个密码 print "Starting\n"; BEGIN { $module='Data::Dumper'; $module_available=1; eval "use $module; 1" or $module_available = 0; } $var=1; print "Module=$module_available\n"; print Dumper $

我有这个密码

print "Starting\n";
BEGIN {
        $module='Data::Dumper';
        $module_available=1;
        eval "use $module; 1" or $module_available = 0;
        }
$var=1;
print "Module=$module_available\n";
print Dumper $var if ($module_available==1);
输出是

Starting
Module=1
$VAR1 = 1;

还有这个

print "Starting\n";
        $module='Data::Dumper';
        $module_available=1;
        eval "use $module; 1" or $module_available = 0;
$var=1;
print "Module=$module_available\n";
print Dumper $var if ($module_available==1);
以及输出

Starting
Module=1

为什么在第一个场景中打印变量

您应该始终

use strict;
use warnings;
在第二个示例中,编译代码时,
Dumper
不是函数。因此perl将其视为一个裸字文件句柄。如果你使用警告,你会得到警告

print() on unopened filehandle Dumper at file.pl line 10. 
在第一个示例中,将eval包装在BEGIN块中。因此,在编译其用法行时,
Dumper
已经导入


您可以在这里阅读有关BEGIN块的更多信息:

值得注意的是,向
转储程序($var)
添加括号将允许Perl将其识别为函数调用,从而消除对
BEGIN
块的需要。