gpt4 book ai didi

perl - 为什么要在 Perl 中导出符号?

转载 作者:行者123 更新时间:2023-12-01 14:03:32 25 4
gpt4 key购买 nike

我觉得 Perl 允许一个包将符号导出到另一个包的 namespace 中似乎很奇怪。导出包不知道使用包是否已经定义了一个同名符号,它当然不能保证它是唯一一个用该名称导出符号的包。

A very common problem由此引起的是使用CGILWP::Simple同时。两个包都导出 head() 并导致错误。我知道,变通很容易,但这不是重点。您不必使用变通方法来使用两个实际核心的 Perl 库。

据我所知,这样做的唯一原因是懒惰。您通过不键入 Foo::或使用对象接口(interface)来节省一些击键,但这真的值得吗?

最佳答案

默认情况下从模块中导出所有函数的做法不是 Perl 推荐的做法。如果你有充分的理由,你应该只导出函数。推荐的做法是使用 EXPORT_OK 以便用户必须键入所需函数的名称,例如:

use My::Module 'my_function';

以前的模块,如 LWP::Simple 和 CGI​​,是在本建议出现之前编写的,现在很难将它们更改为不导出内容,因为这会破坏现有软件。我想这个建议是由于人们注意到这样的问题而产生的。

无论如何,Perl 的面向对象对象或它所称的任何东西都不需要您导出任何东西,而且您不必说 $foo->,所以您的那部分问题是错误的。

关于perl - 为什么要在 Perl 中导出符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1564277/

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