用一个例子最能帮助理解这个概念。Caterpillar.pm
的内容如下:
包变量@EXPORT_OK
应该包含子程序名字的列表。
另一块代码就可以通过名字来import()
这些子程序,一般使用use
语句:
注意:不管@EXPORT_OK
的内容是什么,通过“常规写法”使用这些函数总是可以的:
Perl没有私有方法,习惯上在希望私有的方法名前面有一个或者两个下划线。
@EXPORT
Exporter模块还定义了一个包变量叫@EXPORT
,也包含一组子程序名。
不过我们又回到了那种情况,没有其他提示的话,我们很难知道crawl()
原先是在哪儿定义的。这件事情有两个寓意: