Perl で warn の代わりに Carp を使用する必要があるのはなぜですか? 質問する

Perl で warn の代わりに Carp を使用する必要があるのはなぜですか? 質問する

人々は私に warn の代わりに carp を使った例を挙げ続けます。なぜですか? carp が warn より優れているのはなぜですか?

ベストアンサー1

carp は、メッセージがどこから来たのか(コンテキスト)について、より詳しい情報を提供します。

#!/usr/bin/perl

use Carp;

foo();
bar();
baz();

sub foo {
  warn "foo";
}

sub bar {
  carp "bar";
}

sub baz {
  foo();
  bar(); 
}

生産する

foo at ./foo.pl line 9.
bar at ./foo.pl line 13
        main::bar() called at ./foo.pl line 6
foo at ./foo.pl line 10.
bar at ./foo.pl line 14
        main::bar() called at ./foo.pl line 19
        main::baz() called at ./foo.pl line 7

この小さなプログラムではちょっとばかげているかもしれませんが、誰が文句を言っているメソッドを呼び出したのかを知りたいときには便利です。

おすすめ記事