用一个例子最能帮助理解这个概念。Caterpillar.pm的内容如下:

    包变量@EXPORT_OK应该包含子程序名字的列表。

    另一块代码就可以通过名字来import()这些子程序,一般使用use语句:

    注意:不管@EXPORT_OK的内容是什么,通过“常规写法”使用这些函数总是可以的:

    Perl没有私有方法,习惯上在希望私有的方法名前面有一个或者两个下划线。

    @EXPORT

    Exporter模块还定义了一个包变量叫@EXPORT,也包含一组子程序名。

    不过我们又回到了那种情况,没有其他提示的话,我们很难知道crawl()原先是在哪儿定义的。这件事情有两个寓意: