【发布时间】:2020-08-03 05:39:13
【问题描述】:
是否可以创建带有条件项的数组?
my @a = (1, ($condition) ? 2 : "no-op", 3);
这样"no-op" 是这样工作的函数,如果$condition 为假,那么我得到列表(1, 3),但如果$condition 为真,我得到(1, 2, 3)?
背景:
use strict;
use warnings;
use File::Find::Rule;
my $rule = File::Find::Rule->new();
$rule->or(
$rule->new->name('*.cfg')->prune->discard,
$rule->directory->name("_private.d")->prune->discard,
$rule->new->name('*.t')->prune->discard,
$rule->new->name('*.bak')->prune->discard,
$rule->new->name('.*.bak')->prune->discard,
$rule->new->name('.#*')->prune->discard,
);
my @files = $rule->in(".");
在某些情况下,我想包含该行
$rule->directory->name("_private.d")->prune->discard
在其他情况下,我不想排除目录_private.d..
【问题讨论】:
-
“想包含”和“不想排除”几乎是一回事。
-
my @a = (1, $condition ? 2 : "no-op", 3);应该可以工作 -
@TLP 是的,但在这里它们的意思不同.. :)
-
@ZachLeighton 我不确定你的意思......
-
@ZachLeighton:不,两者都在列表上下文中。运算符创建上下文,而不是括号。
标签: perl