我写了一个小脚本来使用split()
,
use strict;
use warnings;
use Data::Dumper;
my $fh = \*DATA;
while(my $line = <$fh>)
{
my @values = split(':', $line);
foreach my $val (@values) {
print "$val\n";
}
}
__DATA__
1 : Hello World String10 : NO : A1B2,B3
11 : Hello World String11 : YES : A11B2,B3,B14,B25
A1B2,B3
和A11B2,B3
的字符形式只有一个字母A
和一个或两个数字2
,3
,14
,{ {1}}等然后与仅一封信25
以及一个或两个数字连接,例如B
,2
,3
,14
。等
现在出来了
25
如何保留1
Hello World String10
NO
A1B2,B3
11
Hello World String11
YES
A11B2,B3,B14,B25
中的最后一个数组成员并进行连接和输出。
@values
感谢您的评论和回复。
[更新]
我的出局需要遵循规则的连接。
1
Hello World String1
NO
A1B2,A1B3
11
Hello World String11
YES
A11B2,A11B3,A11B14,A11B25
和一两个号码,由A
和B
分隔的一两个号码加入
答案 0 :(得分:2)
你可以这样做:
my @values = split(':', $line);
my $a = $values[-1];
$a =~ s/.*(A\d+).*/$1/s;
$values[-1] =~ s/(?<=,)/$a/g;
答案 1 :(得分:1)
目前还不完全清楚你所问的内容即使在稍微不同的情况下也适用,但这是我的尝试。在打印@values之前,请执行
$values[-1] =~ s/(?<=,)/ substr($values[-1],0,3) /ge;