deprecate
СОДЕРЖАНИЕ
НАЗВАНИЕ
deprecate - Perl-pragma для устаревания включения модуля в ядро
СИНТАКСИС
use deprecate; # warn about future absence if loaded from core ОПИСАНИЕ
Данный pragma упрощает обслуживание модулей с двойной жизнью, которые больше не будут включены в ядро Perl в будущих версиях Perl, но всё ещё включены в текущей.
Цель данного pragma — предупредить пользователей о статусе такого модуля, выдав предупреждение, которое побуждает их установить модуль с CPAN, чтобы будущий апгрейд Perl, в котором этот модуль отсутствует, не сломал их код.
Это предупреждение будет выдано только в том случае, если модуль был загружен из каталога ядра, что позволяет use deprecate строку включить в версию модуля с CPAN. Так как pragma молчит, когда модуль запускается из каталога сторонних библиотек, вызов pragma не нужно патчить ни в ядро, ни в версию модуля с CPAN. Один и тот же код можно использовать для обоих целей.
Важно замечание
Обратите внимание, что когда модуль устанавливается с CPAN в каталог ядра вместо каталогов библиотек сайта, пользователь не защищён от его установки.
В то же время, этот pragma не может определить, когда такой модуль был установлен с CPAN в ядро, и поэтому бесконечно и бесполезно будет призывать пользователя к обновлению.
Поэтому модули, которые могут быть установлены с CPAN в ядро, должны убедиться, что они не вызывают этот pragma, когда они это сделали. В целом это означает, что точная логика установщика должна быть воспроизведена внутри модуля. Например:
# Makefile.PL
WriteMakefile(
# ...
INSTALLDIRS => ( "$]" >= 5.011 ? 'site' : 'perl' ),
);
# lib/Foo/Bar.pm
use if "$]" >= 5.011, 'deprecate'; (Приведённый выше пример демонстрирует наиболее важный случай: когда целевой Perl старше 5.12 (где каталоги ядра имеют приоритет над каталогами библиотек сайта) и модуль, который устанавливается, был включён в ядро в этой версии Perl. В этих обстоятельствах, обновление модуля с CPAN возможно только путём установки в каталог ядра.)
ЭКСПОРТ
По умолчанию нет. Единственный метод — import, вызываемый use deprecate;.
СМОТРИТЕ ТАКЖЕ
Первый пример, который use deprecate; был Switch.
АВТОР
Оригинальная версия Николаса Кларка
АВТОРСКИЕ ПРАВА И ЛИЦЕНЗИЯ
Авторские права (C) 2009, 2011
Эта библиотека является свободным программным обеспечением; вы можете перераспределять её и/или изменять её в соответствии с теми же условиями, что и сам Perl, либо Perl версии 5.10.0, либо, по вашему выбору, любой более поздней версии Perl 5, которая у вас есть.
© 1993–2020 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.32.0/deprecate