debugging 如何在Perl中使用变量Assert?

rm5edbpk  于 2023-08-06  发布在  Perl
关注(0)|答案(6)|浏览(102)

如何检查一个变量在Perl中是否有特定的值?是否有命令可以停止脚本的执行以查找它的一些变量?
我想知道我是否可以使用Python的插入练习:

assert 0, (foo, bar)

字符串
以无调试器的方式调试脚本?

zwghvu4y

zwghvu4y1#

快速的CPAN搜索建议Carp::Assert

pkwftd7m

pkwftd7m2#

参见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;
};

字符串

zpgglvta

zpgglvta4#

PerlMonks中有一个脚本,它引入了一个快速Assert方法。
速度很重要,因为Perl是解释性的,任何内联检查都会影响性能(例如,不像简单的C宏)
我不确定这些东西是否可以直接使用。

好了!这就是我要找的--PDF Warning: Test-Tutorial.pdfTest::Harness用于编写Perl模块测试。

fbcarpbf

fbcarpbf5#

$var_to_check =~ /sometest/ or die "bad variable!";

字符串
我倾向于在代码中抛出这样的东西,然后使用查找和替换来删除它们(在生产代码中)。
此外,' eval '可用于运行一段代码并捕获错误,还可用于创建异常处理功能。如果你Assert一个值不为0,也许你想抛出一个异常,并以一种特殊的方式处理这种情况?

fdbelqdn

fdbelqdn6#

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,则可以这样做。

相关问题