$ log = LogFile-> new ($ cfg {logdir}. '/tpchc.log', ($ tpchc -> {args} -> {debug})?? 1: 0) что это значит, объясните, пожалуйста - PullRequest
0 голосов
/ 13 мая 2019

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

Может кто-нибудь сказать, пожалуйста, что это значит

1 Ответ

1 голос
/ 13 мая 2019

Код создает новый объект LogFile, который принимает два аргумента: путь к файлу журнала и логический флаг отладки.

В этом случае первый аргумент использует конкатенацию (с точкой), а второй аргумент задается с использованием троичного 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";

Некоторые люди находят, что их легче читать, а некоторые нет, каждому свое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...