Ответ 1
сделайте следующее:
use POSIX ();
который остановит экспорт всех функций по умолчанию для модуля POSIX. Затем вам нужно будет префикс всех POSIX-методов с помощью POSIX:: например:
POSIX::remove(filename)
для функции удаления POSIX.
Итак, у меня есть файл, у которого короткая проблема...
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX;
...
sub remove {
...
}
...
и я получаю сообщение об ошибке, когда подпрограмма remove
была переопределена. Я знаю проблему, есть подпрограмма под названием remove
в POSIX. Однако я не знаю, как с этим справиться. Как обычно эта проблема решается?
сделайте следующее:
use POSIX ();
который остановит экспорт всех функций по умолчанию для модуля POSIX. Затем вам нужно будет префикс всех POSIX-методов с помощью POSIX:: например:
POSIX::remove(filename)
для функции удаления POSIX.
Другой способ подавить это предупреждение - переустановить переопределение подпрограммы внутри блока no warnings 'redefine'
:
{
no warnings 'redefine';
sub remove { ... }
}
Вы можете исключить определенные символы из обычного экспорта с помощью директивы '! name' (см. perldoc Exporter), например:
#!/usr/bin/perl -w
package Foo;
use strict;
use POSIX '!remove';
...
sub remove {
...
}
...