引入模块命令require和use
1 都是引入模块,语法:
use ModuleName;
require ModuleName;
ModuleName 不必加pm扩展名
2 区别之一,use语句是编译时引入的,require是运行时引入的。
3 区别之二,use语句所做的事情比require要多一点点,一条
use ModuleName;
语句大致相当于
require ModuleName;
import ModuleName::(@EXPORT);
上面两句的内容。
也就是说,哪怕只用 use ModuleName,当前包的命名空间都会被ModuleName中的@EXPORT中的函数和变量“玷污”,好处是使用 ModeleName中的函数和变量不不必加包前缀 Modelename::
4 如果要use 语句不会“玷污”当前的包命名空间,直接用
use ModuleName () #一个空括号
就行了,这不表示不能用ModuleName的函数和变量,只是用时需要加包前缀,如
$xyz = ModuleName::function1();
5 有时除了引入默认的@EXPORT中的函数和变量,还可以引入附加的函数和变量,这个列表定义在ModuleName 的@EXPORT_OK数组中。可以用
use ModuleName (@EXPORT_OK的一个片段)
这样的方式来引入
6 用use能在编译时就发现问题,用use是未来的趋势。
e.g.
require "Include.pl";
use OPCLogger;
注:use OPCLogger其实是 use OPCLogger.pm,“pm”后缀可以省略,"pl"后缀不能省略。
e.g.
require "Include.pl";
use OPCLogger;
注:use OPCLogger其实是 use OPCLogger.pm,“pm”后缀可以省略,"pl"后缀不能省略。
perl 调用java返回值。
$req = new HTTP::Request 'GET' => "http://$ENV{WLS_HOST}:$ENV{WLS_PORT}/servlet/dateholidayServlet?DATE=" . $dateValue;