所以我有一个文件,简而言之有这个问题......
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX;
...
sub remove {
...
}
...
我得到一个错误,说子例程
remove
已被重新定义。我知道问题所在,POSIX 中有一个名为 remove
的子例程。但是,我不知道如何处理。这个问题通常是如何解决的?
抑制此警告的另一种方法是将子例程重新定义放在
no warnings 'redefine'
块中:
{
no warnings 'redefine';
sub remove { ... }
}
这样做:
use POSIX ();
这将停止导出 POSIX 模块的所有默认功能。然后,您需要为所有 POSIX 方法添加 POSIX:: 前缀,例如:
POSIX::remove(filename)
用于 POSIX 删除功能。
您可以使用 '!name' 指令排除某些符号的正常导出(请参阅 perldoc Exporter),例如:
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX '!remove';
...
sub remove {
...
}
...
在第 N 行重新定义了子例程 XYZ [perl 错误]
您可以将例程包装在没有警告的“重新定义”中(这是词法范围的):
no warnings 'redefine';
sub XYZ{
...
...
}
它对我有用!