所以我必須在短期有這個問題,一個文件...如何處理子程序重新定義錯誤在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