gpt4 book ai didi

perl - 如何检查 Perl 编译是否已经完成?

转载 作者:行者123 更新时间:2023-12-05 00:06:10 24 4
gpt4 key购买 nike

我有一些代码要求应用程序在执行之前完全加载和编译。

有没有办法检查我的 Perl 程序是否还在编译阶段?

我有一些有效的方法,但必须有更好的方法:

sub check_compile {
printf("checking\n");
foreach my $depth (0..10) {
my ($package, $filename, $line, $subroutine) = caller($depth);
last unless (defined($package));

printf(" %s %s %s %s %s\n", $depth, $package, $filename, $line, $subroutine);

if ($subroutine =~ /::BEGIN$/) {
printf("in compile\n");
return 1;
}

}

printf("not in compile\n");
return 0;
}


BEGIN {
check_compile();
}

use subpkg;

check_compile();

和 subpkg.pm 包含:
package subpkg;

use strict;
use warnings;

printf("initing subpkg\n");
main::check_compile();

1; # successfully loaded

最佳答案

我假设您的代码没有太多使用 eval - 否则编译将与执行“混合”发生 - 但您可能会查看 INIT 的使用和类似的块 here作为一种可能的方式来简化这一点。

INIT blocks are run just before the Perl runtime begins execution, in "first in, first out" (FIFO) order.

关于perl - 如何检查 Perl 编译是否已经完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com