所以我有一个文件,简而言之有这个问题......
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX;
...
sub remove {
...
}
...
我得到一个错误,说子程序remove
已被重新定义。remove
我知道问题所在,在 POSIX 中调用了一个子例程。但是,我不知道如何处理它。这个问题通常是如何解决的?
所以我有一个文件,简而言之有这个问题......
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX;
...
sub remove {
...
}
...
我得到一个错误,说子程序remove
已被重新定义。remove
我知道问题所在,在 POSIX 中调用了一个子例程。但是,我不知道如何处理它。这个问题通常是如何解决的?
抑制此警告的另一种方法是将您的子例程重新定义放在一个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 错误]
您可以将您的例程包装在没有警告“重新定义”(这是词法范围)中:
没有警告“重新定义”;
sub XYZ{
...
...
}
它对我有用!