我有一个散列(%hash),其值为
test0 something1
test1 something
test2 something
我需要使用以下元素
从键构建数组@test_array = part0_0 part1_0 part2_0
基本上,我必须使用testx(key)并将其替换为partx_0
当然,我可以像下面这样轻松创建数组
my @test_array;
foreach my $keys (keys %hash) {
push(@test_array,$keys);
}
我会得到
@test_array = test0 test1 test2
但我想要的是获取part0_0而不是test0,part1_0而不是test1和part2_0而不是test2
答案 0 :(得分:9)
为什么不轻松
my @array = ( keys %hash )
答案 1 :(得分:7)
看起来是使用non-destructive /r
option for substitutions的好时机。
my @array = map s/^test(\d+)/part${1}_0/r, keys %a;
对于不支持/r
的perl版本:
my @array = map { s/^test(\d+)/part${1}_0/; $_ } keys %a:
答案 2 :(得分:3)
my @a;
for (keys %hash) {
push @a, 'part' . ( /^test([0-9]+)/ )[0] . '_0';
}
但这只是要求使用map
。
my @a =
map { 'part' . ( /^test([0-9]+)/ )[0] . '_0' }
keys %hash;
答案 3 :(得分:0)
my @array = map { s/^.+([0-9]).*/part$1_0/g;split } keys %hash;