14

だから私は要するにこの問題を抱えているファイルを持っています...

#!/usr/bin/perl -w
package Foo;

use strict;
use POSIX;

...

sub remove {
  ...
}
...

サブルーチンremoveが再定義されたことを示すエラーが表示されます。私は問題を知っていますremove.POSIXで呼び出されるサブルーチンがあります. しかし、私はそれを処理する方法がわかりません。この問題は通常どのように解決されますか?

4

4 に答える 4

26

この警告を抑制するもう 1 つの方法は、サブルーチンの再定義をno warnings 'redefine'ブロック内に置くことです。

{
    no warnings 'redefine';
    sub remove { ... }
}
于 2010-08-29T03:30:49.790 に答える
21

これを行う:

use POSIX ();

これにより、POSIXモジュールのすべてのデフォルト機能のエクスポートが停止します。次に、すべてのPOSIXメソッドの前にPOSIX::を付ける必要があります。

POSIX::remove(filename)

POSIX削除機能の場合。

于 2010-08-29T03:02:43.810 に答える
19

'!name' ディレクティブを使用して、特定のシンボルを通常のエクスポートから除外できます ( perldoc Exporterを参照)。

#!/usr/bin/perl -w
package Foo;

use strict;
use POSIX '!remove';

...

sub remove {
  ...
}
...
于 2010-08-29T04:37:02.223 に答える
-1

サブルーチン XYZ が N 行目で再定義されました [perl エラー]

ルーチンを警告なしで「再定義」することができます (これはレキシカルスコープです):

警告なし「再定義」;

sub XYZ{

...
...

}

それは私のために働いた!

于 2018-09-26T09:52:13.530 に答える