所以我必须在短期有这个问题,一个文件...如何处理子程序重新定义错误在Perl
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX;
...
sub remove {
...
}
...
,我得到一个得到一个错误说子程序remove
已经被重新定义。我知道这个问题,在POSIX中有一个叫做remove
的子程序。但是,我不知道如何处理它。这个问题通常如何解决?
所以我必须在短期有这个问题,一个文件...如何处理子程序重新定义错误在Perl
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX;
...
sub remove {
...
}
...
,我得到一个得到一个错误说子程序remove
已经被重新定义。我知道这个问题,在POSIX中有一个叫做remove
的子程序。但是,我不知道如何处理它。这个问题通常如何解决?
做到这一点:
use POSIX();
将停止出口的POSIX模块的所有默认功能。然后,您需要以POSIX ::为前缀所有POSIX方法::如:
POSIX::remove(filename)
POSIX删除功能。
另一种方式来禁止这种警告是把你的子程序重新定义一个no warnings 'redefine'
块中:“名称”
{
no warnings 'redefine';
sub remove { ... }
}
可以被正常使用指令出口排除某些符号(见perldoc Exporter)例如:
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX '!remove';
...
sub remove {
...
}
...
我不知道'!name'指令!整齐! – 2010-08-30 17:50:04
谢谢。这是传统吗? – floogads 2010-08-29 03:08:43
是的,一般来说,为了避免冲突的子程序定义,最好不要导入任何内容,或者只有那些你确定的子程序才会有唯一的名称。 – ennuikiller 2010-08-29 03:17:32
@floogads,更通常的说'使用POSIX qw(mkfifo modf);'你明确列出你想要导入的所有函数。这样,您不必使用全部的'POSIX ::'前缀,而且您不必担心与程序中的子例程名称发生冲突。 – cjm 2010-08-29 03:48:27