perl - 来自另一组的 Perl 打印组
问题描述
我有这个脚本,它几乎只是打印从垂直到水平的数据集。
我是跳过一些不属于我想要的集合的名称。但是我想打印出只需选择姓名缩写,同时保留订单。
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper ;
my $filename = shift @ARGV ;
open(my $fh, '<', $filename) or die "Could not open file $filename $!";
while (<$fh>) {
next if /^$/;
chomp $_ ;
print $_ ;
}
伪代码
if $_ (is one of these WJ: DS: AP: )
print $_
else
skip, don't print
所以从这组——
LC:
NW:
DS:
AP:
II:
NW:
KB:
JK:
LC:
DS:
TM:
AP:
WJ:
这些不会打印到终端
LC:
NW:
II:
NW:
KB:
JK:
TM:
这些将被打印到终端 - 水平保留订单
DS: AP: AP: WJ:
解决方案
next if !/^(?:AP|DS|WJ):\z/;
如果我们不想对列表进行硬编码怎么办。
准备:
my @to_keep = qw( AP DS WJ );
my $to_keep_alt = join '|', map quotemeta, @to_keep;
my $to_keep_re = qr/^(?:$to_keep_alt):\z/;
在循环中:
next if !/$to_keep_re/;
一种不需要对列表进行硬编码的更快的替代方法。
准备:
my @to_keep = qw( AP DS WJ );
my %to_keep = map { "$_:" => 1 } @to_keep;
在循环中:
next if !$to_keep{$_};
推荐阅读
- python - 时间网格中的时间注册以及表单和表单集
- r - 阅读此链接会导致 read_excel 出现错误
- spartacus-storefront - SAP Spartacus OccStoreFinderAdapter 覆盖
- python - 如何将 JSON 附加到 .json 文件?
- deep-learning - Pytorch混合精度学习,torch.cuda.amp运行比正常慢
- javascript - 带有 firestore 和 useContext 的图库
- python - 已安装 python 导入模块
- markdown - 如何在代码块中插入代码块以在 Markdown 中举例?
- php - 如何在生产中为此授予权限:无法写入 wp-config.php 文件?
- flutter - 带有分页问题的颤振过滤器数据