$ log = LogFile-> new($ cfg {logdir}。'/tpchc.log',($ tpchc-> {args}-> {debug})?1:0)这是什么意思,请解释一下

时间:2019-05-13 11:26:41

标签: perl

$ log = LogFile-> new($ cfg {logdir}。'/tpchc.log',($ tpchc-> {args}-> {debug})?1:0)

有人可以告诉我这是什么意思

1 个答案:

答案 0 :(得分:1)

代码正在创建一个新的LogFile对象,该对象带有两个参数:日志文件的路径和调试布尔标志。

在这种情况下,第一个参数使用串联(带有句点),第二个参数使用ternary if-else设置。

Perl是一种运行时编译语言,因此它允许您以这种方式直接在构造函数中编写参数(尽管对此有一定限制)。等同于:

my $file  = $cfg{logdir} . '/tpchc.log';
my $debug = $tpchc->{args}->{debug} ? 1 : 0;
my $log   = LogFile->new($file, $debug);

顺便说一句,可以将简单的哈希和哈希引用(但不能将对象)插入字符串中,因此实际上不需要连接$file行:

my $file = "$cfg{logdir}/tpchc.log";

有些人发现它们更容易阅读,而有些人则不然。