小编Sta*_*ski的帖子

在Perl中使用未知方法

我无法理解,为什么Perl在像这样的程序中执行大括号中的代码:

unknown_method {
    # some code
};
Run Code Online (Sandbox Code Playgroud)

我的节目:

文件Transaction.pm:

package Transaction;
use strict;
use warnings;
use feature qw/ say /;

sub transaction(&) {
    say 'BEGIN TRANSACTION';
    eval {
        shift->()
    };
    if ( $@ ) {
        say 'ROLLBACK TRANSACTION';
        die($@);  # reraise error
    } else {
        say 'COMMIT TRANSACTION';
    }
}
1;
Run Code Online (Sandbox Code Playgroud)

文件run_properly.pl:

use feature qw/ say /;
use Transaction;
eval {
    Transaction::transaction {
        say "insert some data to DB";
        die("KnownException")
    }
};
warn $@;
Run Code Online (Sandbox Code Playgroud)

文件run_wrong.pl:

use feature qw/ say /; …
Run Code Online (Sandbox Code Playgroud)

perl prototype

5
推荐指数
1
解决办法
194
查看次数

标签 统计

perl ×1

prototype ×1