Подтвердить что ты не робот

Как обрабатывать переопределенные ошибки подпрограммы в Perl

Итак, у меня есть файл, у которого короткая проблема...

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

use strict;
use POSIX;

...

sub remove {
  ...
}
...

и я получаю сообщение об ошибке, когда подпрограмма remove была переопределена. Я знаю проблему, есть подпрограмма под названием remove в POSIX. Однако я не знаю, как с этим справиться. Как обычно эта проблема решается?

4b9b3361

Ответ 1

сделайте следующее:

use POSIX ();

который остановит экспорт всех функций по умолчанию для модуля POSIX. Затем вам нужно будет префикс всех POSIX-методов с помощью POSIX:: например:

POSIX::remove(filename)

для функции удаления POSIX.

Ответ 2

Другой способ подавить это предупреждение - переустановить переопределение подпрограммы внутри блока no warnings 'redefine':

{
    no warnings 'redefine';
    sub remove { ... }
}

Ответ 3

Вы можете исключить определенные символы из обычного экспорта с помощью директивы '! name' (см. perldoc Exporter), например:

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

use strict;
use POSIX '!remove';

...

sub remove {
  ...
}
...