在" Perl最佳实践 "中,AUTOLOAD部分的第一行是:
不要使用AUTOLOAD
然而,他描述的所有案例都涉及OO或模块.
我有一个独立的脚本,其中一些命令行开关控制定义特定函数的哪个版本.现在我知道我可以采取条件和描述并将其裸体放在我的文件顶部之前,但我觉得将它们放在文件末尾的AUTOLOAD中更方便,更清晰.
这是不好的做法/风格吗?如果你这么认为,为什么还有另一种方法呢?
按照布莱恩的要求
我基本上是用它来根据命令行开关进行条件编译.
我不介意一些建设性的批评.
sub AUTOLOAD {
our $AUTOLOAD;
(my $method = $AUTOLOAD) =~ s/.*:://s; # remove package name
if ($method eq 'tcpdump' && $tcpdump) {
eval q(
sub tcpdump {
my $msg = shift;
warn gf_time()." Thread ".threads->tid().": $msg\n";
}
);
} elsif ($method eq 'loginfo' && $debug) {
eval q(
sub loginfo {
my $msg = shift;
$msg =~ s/$CRLF/\n/g;
print gf_time()." Thread ".threads->tid().": $msg\n";
}
);
} elsif ($method eq 'build_get') …Run Code Online (Sandbox Code Playgroud)