Предупреждения::warnif("устарел"...) с карпом?
Я хотел бы отправить уведомление об устаревании, как
warnings::warnif( 'deprecated', 'function foo is deprecated' );
но я бы предпочел, чтобы он был прикован, чтобы он сообщал вызывающей стороне, а не там, где находится фактическое предупреждение. Могу ли я сделать это с carp
каким-то образом?
1 ответ
Решение
package Foo {
sub bar {
warnings::warnif(deprecated => 'Foo:bar is deprecated');
}
}
use warnings;
# no warnings 'deprecated'; # <-- uncomment this to disable the warning
Foo::bar(); # <-- this is line 9
Это должно сказать что-то вроде:
Foo::bar is deprecated at test.pl line 9.
Фактически, глядя на источник warnings.pm, он, похоже, использует Carp.pm для внутреннего использования. По общему признанию, документация для самой прагмы предупреждений могла бы быть более ясной об этом, но perllexwarn действительно ясно дает понять, что именно так она и должна использоваться.