gpt4 book ai didi

Perl 加载模块开始

转载 作者:行者123 更新时间:2023-12-01 23:40:44 25 4
gpt4 key购买 nike

我有这个代码

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 block 中。所以 Dumper 在其用法行被编译时已经被导入。

您可以在此处阅读有关 BEGIN block 的更多信息:perlmod

关于Perl 加载模块开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65002289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com