1

次のような非推奨通知を送信したい

warnings::warnif( 'deprecated', 'function foo is deprecated' );

しかし、実際の警告がどこにあるかではなく、呼び出し元に報告するように、それをカープしたいと思います。carpどうにかしてこれを行うことはできますか?

4

1 に答える 1

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 を使っているようです。確かに、warnings プラグマ自体のドキュメントはこれについてより明確になる可能性がありますが、perllexwarnは、これがどのように使用されることを意図しているかをかなり明確にしています。

于 2013-08-01T12:12:24.927 に答える