我有一个带有以下值的哈希值(%hash)
test0 something1
test1 something
test2 something
Run Code Online (Sandbox Code Playgroud)
我需要使用以下元素从键构建数组
@test_array = part0_0 part1_0 part2_0
Run Code Online (Sandbox Code Playgroud)
基本上,我必须使用testx(key)并将其替换为partx_0
当然,我可以像下面这样轻松创建数组
my @test_array;
foreach my $keys (keys %hash) {
push(@test_array,$keys);
}
Run Code Online (Sandbox Code Playgroud)
我会的
@test_array = test0 test1 test2
Run Code Online (Sandbox Code Playgroud)
但我想要的是得到part0_0而不是test0,part1_0而不是test1和part2_0而不是test2
小智 9
为什么不做更容易
my @array = ( keys %hash )
Run Code Online (Sandbox Code Playgroud)
看起来是使用非破坏性/r
选项进行替换的好时机.
my @array = map s/^test(\d+)/part${1}_0/r, keys %a;
Run Code Online (Sandbox Code Playgroud)
对于不支持的perl版本/r
:
my @array = map { s/^test(\d+)/part${1}_0/; $_ } keys %a:
Run Code Online (Sandbox Code Playgroud)