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