【问题标题】:Perl use Package - AH01215: Undefined subroutinePerl 使用包 - AH01215:未定义的子例程
【发布时间】:2015-05-18 09:52:21
【问题描述】:

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

这发生在我自己的包(“MyFunctions”)中。我得到了使用 URI::Escape 行。当我使用 &URI::Escape::uri_unescape 时,它​​似乎工作正常。但我就是不明白为什么它会在我的包中寻找这个子例程......

谁能给我解释一下?有没有办法解决这个问题?我真的不想每次调用这个函数时都写整个 package-name::funktion :/

【问题讨论】:

  • use URI::Escape 行是否位于package MyFunctions 行之后?
  • 以前没有。我总是先导入 CPAN-Packages,然后使用 lib "/my/path" 并导入我的例程...

标签: perl


【解决方案1】:

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

package MyFunctions;
use URI::Escape;

否则,函数将被导入之前的命名空间,在您的情况下可能是 main(您可以通过运行 main::uri_unescape() 来验证。

【讨论】:

  • 听起来不错。我午饭后试一试。感谢您的建议。
猜你喜欢
  • 2013-08-13
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2017-02-25
  • 2015-10-22
相关资源
最近更新 更多