perl 调试
偶尔有一块Perl代码仅用于调试或开发调整很有用。 很好,但是拥有这样的块可能会提高性能,特别是如果是否在运行时做出决定的话。
Curtis“ Ovid” Poe最近编写了一个可以帮助解决此问题的模块: Keyword :: DEVELOPMENT 。 该模块利用Keyword :: Simple和Perl 5.012中引入的可插入关键字体系结构来创建一个新关键字:DEVELOPMENT。 它使用PERL_KEYWORD_DEVELOPMENT环境变量的值来确定是否要执行代码块。
使用它再简单不过了:
use Keyword
::
DEVELOPMENT
;
sub doing_my_big_loop
{
my
$self
=
shift
;
DEVELOPMENT
{
# insert expensive debugging code here!
}
}
在编译时,已对DEVELOPMENT块中的代码进行了优化,并且根本不存在。
您看到这里的优势了吗? 将环境变量PERL_KEYWORD_DEVELOPMENT设置为在沙盒上为true,在生产环境上为false,可以将有价值的调试工具提交给您的代码存储库,始终在需要时使用。
在没有更先进的配置管理系统的情况下,您也可以使用此模块来处理生产和开发或测试环境之间的设置差异:
sub connect_to_my_database
{
my
$dsn
=
"dbi:mysql:productiondb"
;
my
$user
=
"db_user"
;
my
$pass
=
"db_pass"
;
DEVELOPMENT
{
# Override some of that config information
$dsn
=
"dbi:mysql:developmentdb"
;
}
my
$db_handle
= DBI
->
connect
(
$dsn
,
$user
,
$pass
)
;
}
稍后对该代码段进行增强,可以使您从其他地方(例如,YAML或INI文件)读取配置信息,但是希望您在此处看到该实用程序。
我查看了Keyword :: DEVELOPMENT的源代码,花了大约半小时才想知道:“天哪,为什么我没有想到呢?” 一旦安装了Keyword :: Simple,Curtis提供给我们的模块就会非常简单。 对于我很长时间的编码实践中所需要的东西,这是一个优雅的解决方案。
翻译自: https://opensource.com/article/18/4/perl-module-debugging-code
perl 调试