7

Perlで変数に特定の値があることを確認するにはどうすればよいですか? スクリプトの実行を停止して、その変数の一部を検索するコマンドはありますか?

挿入の Pythonic プラクティスを使用できるかどうか疑問に思います。

    assert 0, (foo, bar)

デバッガなしでスクリプトをデバッグするには?

4

6 に答える 6

12

CPAN をすばやく検索すると、Carp::Assertが提案されます。

于 2009-06-21T12:58:04.723 に答える
8

Carp::Assertを参照してください:

use Carp::Assert;

$next_sunrise_time = sunrise();

# Assert that the sun must rise in the next 24 hours.
assert(($next_sunrise_time - time) < 24*60*60) if DEBUG;

# Assert that your customer's primary credit card is active
affirm {
    my @cards = @{$customer->credit_cards};
    $cards[0]->is_active;
};
于 2009-06-21T12:58:05.330 に答える
5

Smart::コメントはいいね。

于 2009-06-21T13:44:06.503 に答える
3

PerlMonksには、高速なアサート メソッドを導入するスクリプトがあります。

Perl は解釈され、インライン チェックはパフォーマンスに影響するため、速度は重要です (単純な C マクロなどとは異なります)。


これらが直接使用できるかどうかはわかりません。


Ok!これは私が探していたものです - PDF 警告: Test-Tutorial.pdf。は、Test::HarnessPerl モジュール テストの記述に使用されます。

于 2009-06-21T12:54:23.903 に答える
1
if ( $next_sunrise_time > 24*60*60 ) { warn( "assertion failed" ); } # Assert that the sun must rise in the next 24 hours.

Carp::Assertに必要な Perl 5.9 にアクセスできない場合は、これを行うことができます。

于 2012-03-14T17:50:37.030 に答える
1
$var_to_check =~ /sometest/ or die "bad variable!";

私は自分のコードでこのようなものをスローする傾向があり、後で検索と置換を使用してそれらを取り除きます (製品コードで)。

また、' eval ' を使用してコードのセクションを実行し、エラーをキャプチャしたり、例外処理機能を作成したりすることができます。値が 0 ではないことを主張している場合、おそらく例外をスローして、そのケースを特別な方法で処理する必要がありますか?

于 2009-06-21T13:51:18.873 に答える