Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 访问;成对散列“;用于柱规范的参考文献_Perl_Hash_Conventions - Fatal编程技术网

Perl 访问;成对散列“;用于柱规范的参考文献

Perl 访问;成对散列“;用于柱规范的参考文献,perl,hash,conventions,Perl,Hash,Conventions,我正在建立一个小型库,将日志数据转换为类似CSV的文件,可以通过电子表格软件导入。对于输出,我感兴趣的是一个选项,如果需要,可以为表列显示人性化的标题。这应该是一个选项,以便该工具也可以用最少的努力来使用。我提出了一个列规范数组,其中包含键的普通标量或具有一对键和值的散列引用。我通过键和值访问这些,这对我来说有点奇怪 是否有一种更简单的方法来访问仅包含一对的散列的密钥和值? (我尽量简化代码。) 使用每个 发件人: 在列表上下文中对哈希调用时,返回一个2元素列表 由哈希的下一个元素的键和值组成

我正在建立一个小型库,将日志数据转换为类似CSV的文件,可以通过电子表格软件导入。对于输出,我感兴趣的是一个选项,如果需要,可以为表列显示人性化的标题。这应该是一个选项,以便该工具也可以用最少的努力来使用。我提出了一个列规范数组,其中包含键的普通标量或具有一对键和值的散列引用。我通过键和值访问这些,这对我来说有点奇怪

是否有一种更简单的方法来访问仅包含一对的散列的密钥和值?

(我尽量简化代码。)

使用
每个

发件人:

在列表上下文中对哈希调用时,返回一个2元素列表 由哈希的下一个元素的键和值组成

但是不要忘记使用
键(%hash)
重置迭代器,之后或后续的
每个
都将失败

my ($k, $v) = each(%$_);
keys(%$_);
使用
每个

发件人:

在列表上下文中对哈希调用时,返回一个2元素列表 由哈希的下一个元素的键和值组成

但是不要忘记使用
键(%hash)
重置迭代器,之后或后续的
每个
都将失败

my ($k, $v) = each(%$_);
keys(%$_);
您所需要的一切:

my ($k, $v) = %hash;
所以

您所需要的一切:

my ($k, $v) = %hash;
所以


键和
值有什么问题?你的代码已经很简单了。@ThisSuitesBlack不是…我想的那样,但是因为打开了一个列表上下文,我发现由于参数的预期单例字符,这是误导性的。没有什么误导性的,你可以推单标量和多标量:
push@foo,$bar
。我认为您考虑得太多了。@ThisSuitesBlack不是因为可读性和最小的混乱(“自我文档”),这就是为什么我更喜欢在
打印表的调用端使用小哈希而不是两个元素数组的原因。也许我的上一条评论本身有点混乱,我认为是复数形式的
键和
值有误导性。键和
值有什么问题?你的代码已经很简单了。@ThisSuitesBlack不是…我想的那样,但是因为打开了一个列表上下文,我发现由于参数的预期单例字符,这是误导性的。没有什么误导性的,你可以推单标量和多标量:
push@foo,$bar
。我认为您考虑得太多了。@ThisSuitesBlack不是因为可读性和最小的混乱(“自我文档”),这就是为什么我更喜欢在
打印表的调用端使用小哈希而不是两个元素数组的原因。也许我的上一条评论本身有点让人困惑,我认为是复数形式的
键和
值有误导性。@Wolf,没有。回答时添加了警告。@Wolf,没有。回答时添加了警告。太好了,你带来了这个版本(
my($k,$v)=%hash;
)。与此同时,我自己也发现了这一点。看起来很简单。它还教给我们关于List.BTW的一个教训:你会考虑这些“配对哈希”正常或他们通常表示坏的解决方案…你能为这种替代品提出一个更为惯用的解决方案吗?这是不寻常的,但也不一定是坏的。数组(例如,
[x=>'u']
)将更方便(
push@keys,$\u->[0];
)。如果调用者必须打印表格(x=>'u',y=>'y')
,这真的有那么糟糕吗?啊,我明白了,但需要习惯:
=>
不局限于散列:-)非常感谢。很好,你带来了这个版本(
my($k,$v)=%hash;
)。与此同时,我自己也发现了这一点。看起来很简单。它还教给我们关于List.BTW的一个教训:你会考虑这些“配对哈希”正常或他们通常表示坏的解决方案…你能为这种替代品提出一个更为惯用的解决方案吗?这是不寻常的,但也不一定是坏的。数组(例如,
[x=>'u']
)将更方便(
push@keys,$\u->[0];
)。如果调用方必须打印表格(x=>'u',y=>'y')
,这真的有那么糟糕吗?啊,我明白了,但需要习惯:
=>
不限于散列:-)非常感谢。
push @keys,     ( %$_ )[0];
push @captions, ( %$_ )[1];