我有一个我想要转换为哈希表的数组。基本上,我希望@array[0]
是哈希的键,@array[1]
是哈希的值。在perl中有一个简单的方法吗?我到目前为止的代码如下:
#!/usr/bin/perl
use warnings;
use strict;
use diagnostics;
unless( open(INFILE, "<", 'scratch/Drosophila/fb_synonym_fb_2014_05.tsv')) {
die "Cannot open file for reading: ", $!;
while(<INFILE>) {
my @values = split();
#convert values[0] to keys, values[1] to values
}
该文件可供下载here
答案 0 :(得分:3)
@array[0]
(一个数组切片,用于返回多个元素)是一种编写$array[0]
的错误方法(数组查找,用于返回单个元素)。 use warnings;
会告诉你这个。
要设置哈希元素,请使用
$hash{$key} = $val;
所以代码变成了
my %hash;
while (<>) {
chomp;
my @fields = split /\t/;
$hash{ $fields[0] } = $fields[1];
}
更好的是,
my %hash;
while (<>) {
chomp;
my ($key, $val) = split /\t/;
$hash{$key} = $val;
}
文件的名称意味着字段是以制表符分隔的,而不是以空格分隔,所以我切换了
split ' '
到
split /\t/
这需要添加chomp
。