perl - 生成包含条件项的列表

标签 perl

是否可以创建一个包含条件项的数组?

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 : ()), 3);

关于perl - 生成包含条件项的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27821728/

相关文章:

perl - perl 中的对象类名

perl - 如何猜测 Perl 中字符串的编码?

perl - 在没有 CGI 的情况下运行像 php 这样的 perl 脚本

Perl -e 并打印 $_

r - 测试软件QuickCheck有R接口(interface)吗?

使用标志进行 Perl 调试

perl - 在 Perl 中如何按二级哈希值排序?

perl - 使用 Test::More 和 Test::Deep 打印失败的子测试

CGI 中的 Javascript 显示错误

perl - 打印数组后不需要的空格。我正在使用 perl