Perl使用包-AH01215:未定义的子例程

Perl使用包-AH01215:未定义的子例程,perl,Perl,我正在使用包URI::Escape。通常,我可以通过命名直接调用函数,例如uri_unescape('some text'),但实际上我得到的是AH01215:Undefined subroutine&MyFunctions::uri_unescape调用于 这发生在我自己的包(“MyFunctions”)中。我得到了use URI::Escape行。当我使用&URI::Escape::URI\u unescape时,它似乎工作得很好。但我不明白为什么它在我的包中寻找这个子程序 有人能给我解释一

我正在使用包URI::Escape。通常,我可以通过命名直接调用函数,例如uri_unescape('some text'),但实际上我得到的是AH01215:Undefined subroutine&MyFunctions::uri_unescape调用于

这发生在我自己的包(“MyFunctions”)中。我得到了use URI::Escape行。当我使用&URI::Escape::URI\u unescape时,它似乎工作得很好。但我不明白为什么它在我的包中寻找这个子程序


有人能给我解释一下吗?有什么办法解决这个问题吗?我真的不想每次调用这个函数时都编写整个包名::funktion://

子例程被导入当前名称空间。您必须将
use
行放在
package
声明之后:

package MyFunctions;
use URI::Escape;

否则,函数将被导入到前面的名称空间中,在您的例子中可能是
main
(您可以通过运行
main::uri_unescape()

验证
use uri::Escape
行是否位于
package MyFunctions
行之后?之前没有。我总是先导入CPAN包,然后使用lib“/my/path”和导入我的例程…很好。午饭后我会试试。谢谢你的建议。