的散列我一個perl新手試圖執行以下操作:解析製表符分隔的文件到陣列
1)取用戶輸入
2)從文件1的列1匹配與該值的情況下,輸入並將來自列2的對應值存儲在散列,散列或散列散列中。 (下面的代碼存儲在數組的散列,但我不知道這是否是最佳的3以下完成)
3)我需要找到文件2中第一列的所有實例(如果它們存在)=文件中的第2列1.
爲簡單起見,我在下面提供了示例文件。
我試圖採取「AAA」的用戶輸入在所述輸入文件到一個散列或陣列的第1列,作爲密鑰對所有相應的值在第2列
我的輸入文件具有多個列1中的「AAA」實例的列2的值不同,列1 &中也有'AAA'和'BBB'的多個實例。我相信爲了正確輸出,我需要使用散列哈希但我不確定句法如何處理它。
我試過搜索這個網站,發現了一些例子,但我害怕我只會更迷惑自己。
輸入文件的示例。我的代碼
AAA BBB
AAA CCC
AAA BBB
BBB DDD
CCC AAA
例
#!/usr/bin/perl
use warnings;
use strict;
use diagnostics;
use Data::Dumper;
#declare values
my %hash =();
#Get protein name from user
print "Get column 1 value: ";
my $value = <STDIN>;
chomp $value;
#open input file
open FILE, "file" or die("unable to open file\n");
while(my $line = <FILE>) {
chomp($line);
my($column1, $column2) = split("\t", $line);
if ($column1 eq $value) {
push @{ $hash{$column1} }, $column2;
}
}
close FILE;
print Dumper(\%hash);
代碼輸出
$VAR1 = {
'AAA' => [
'BBB',
'CCC'
]
};
我的問題是將要爲文件2讀取第1列,並將它與比較我的陣列設置工作最佳的當前散列文件1的第2列?或者我應該採取不同的方式?
散列密鑰是唯一的,所以你想要的結構是不可能的。另一方面[數組數組和數組哈希](http://perldoc.perl.org/perldsc.html)更有意義。 – 2014-10-28 06:53:43