为什么要在use语句后添加LIST

  • 本文关键字:语句 添加 LIST use perl
  • 更新时间 :
  • 英文 :


use File::Spec;use File::Spec qw(rel2abs);有什么区别?

信不信由你,我确实先在谷歌上搜索了一下,但我想使用列表这两个词太模糊了,谷歌找不到任何有用的东西。

需要明确的是,我的问题是关于qw()的使用而不是。我只是问它包含的列表。

use Module;

相当于

BEGIN { 
require Module;
Module->import();
}

import的作用取决于模块。它可能什么都不做,可能导出符号,也可能做其他事情。许多模块都有此导出的默认符号列表。


use Module LIST;

相当于

BEGIN { 
require Module;
Module->import(LIST);
}

import的作用取决于模块。它可能什么都不做,可能导出符号,也可能做其他事情。许多模块将导出指定的符号(而不导出其他符号(。


use Module ( );

use Module qw( );

相当于

BEGIN { 
require Module;
}

不调用import


File::Spec没有定义或继承import方法,因此use File::Spec;use File::Spec qw( rel2abs );等效于use File::Spec qw( );。(调用不存在的import方法不会导致错误。(use File::Spec qw( rel2abs );可能应该是use File::Spec::Functions qw( rel2abs );


我几乎从来没有use Module;;我更喜欢指定要导入的符号。这有两个好处:

  • 我不导入我不需要的符号。避免名称空间污染提供了一些小的好处;感到惊讶的机会更少">
  • 阅读我的代码的人(包括我自己(可以很容易地找到提供导入符号的模块

最新更新