gpt4 book ai didi

arrays - 如何在 perl 中将数组 [key1,val1] 映射到哈希 { key1 => val1}?

转载 作者:行者123 更新时间:2023-12-03 18:10:14 24 4
gpt4 key购买 nike

问题是我有一个数组,该数组将键值对作为数组中的元素,我必须以某种方式将它们拆分为哈希中的键 => 值对。

我第一次尝试这样做,但我认为它非常困惑 - 我必须获取数组的所有其他元素,然后过滤以找到接受的键以创建散列

my $HASH;
my $ARRAY = [ key1, val1, key2, val2, __key3__, val3, __key4__, val4 ];
my @keys = map{ $ARRAY[ $_*2 ] } 0 .. int($#ARRAY/2);
my @vals = map{ $ARRAY[ $_*2+1 ] } 0 .. int($#ARRAY/2);

my $i = 0;
#filter for keys that only have __key__ format
for $key (@keys){
if( $key && $key =~ m/^__(.*)__$/i ){
$HASH{$1} = $vals[$i];
}
$i++;
}
# only key3 and key4 should be in $HASH now

我找到了这个 sample code我认为这与我正在寻找的很接近,但我无法弄清楚如何在数组上实现类似的东西,而不是遍历文本文件的行:
$file = 'myfile.txt'
open I, '<', $file
my %hash;
%hash = map { split /\s*,\s*,/,$_,2 } grep (!/^$/,<I>);
print STDERR "[ITEM] $_ => $hash{$_}\n" for keys %hash;

你们中的任何一个 perl 大师都可以帮助我理解做到这一点的最佳方法吗?即使我能以某种方式将所有元素连接成一个字符串,然后分割成每隔一个空格标记——这也可能有效,但现在我被卡住了!

最佳答案

这很容易:

use strict; use warnings;
use YAML;

my $ARRAY = [qw(key1 val1 key2 val2 __key3__ val3 __key4__ val4)];
my $HASH = { @$ARRAY };

print Dump $HASH;

输出:

C:\温度>
---
__key3__:val3
__key4__:val4
键 1:值 1
键 2:值 2

关于arrays - 如何在 perl 中将数组 [key1,val1] 映射到哈希 { key1 => val1}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7653342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com