perl - 如何将可变长度的行分配给perl中的变量?

标签 perl hash

我有一个我想读取的文件,每个位置都有可变数量的 ID,如下所示:

loc1    id1    id4    id5   id9
loc2    id2 
loc3    id1    id11   id23

我想按如下方式存储它 locs(loc) = {all ids belonging to that location} 这样一来,当我阅读另​​一个文件时,我可以做类似的事情

if (grep id, locs(loc)){do something}

我尝试使用散列来执行此操作,但这不起作用。我试过了:

open my $loclist, '<', $ARGV[0];
my %locs;
while (<$loclist>) {
my @loclist_rec = split;
my $loclist_loc = @rlist_rec[0];
$locs{$loclist_loc} = @loclist_rec;
}

但这行不通。 我是 perl 的新手,仍在尝试理解不同的数据类型。

有什么想法吗?非常感谢!

最佳答案

这应该做你想做的。

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

open my $loclist, '<', "test.txt" or die $!;
my %locs;

while (<$loclist>) {
    my ($loclist_loc, @loclist_rec) = split;
    $locs{$loclist_loc} = \@loclist_rec;
}

print Dumper \%locs;

输出:

$ perl test.pl
$VAR1 = {
          'loc2' => [
                      'id2'
                    ],
          'loc1' => [
                      'id1',
                      'id4',
                      'id5',
                      'id9'
                    ],
          'loc3' => [
                      'id1',
                      'id11',
                      'id23'
                    ]
        };

关于perl - 如何将可变长度的行分配给perl中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21469586/

相关文章:

perl - 如何在 Perl 中获取当前登录用户的主要组和其他组?

postgresql - Postgres XC 中的 DISTRIBUTE BY REPLICATE 和 HASH 有什么区别?

python - 如何在Ubuntu 14.0.4上安装ImageHash?

perl - 如何使用一列索引值在单独的数据集中创建新列

perl - 如何在 Perl 中创建一个新的空哈希引用?

perl - Perl 中如何检查文件是否存在?

perl - 如果其父进程先完成,后台进程是否完成?

performance - 检查 Perl 函数参数值得吗?

perl - 什么时候需要我们的关键字?

python-2.7 - 当使用 uuid5 而不是 sha1 时,碰撞概率是否相同?