这将比解释更容易在代码中显示。我刚刚得到一个哈希映射来快速填充哈希以对脚本读取的数据运行替换。例如,如果 5 输出 6,如果 3 输出 2,如果 23 输出 6,等等。除了不映射之外,这工作得很好钥匙之一。
(顺便说一句,如果有人能想到一种更优雅的方式将哈希中的多个键映射到单个值,请告诉我:))
无论如何到代码...
$COLUMN = 6;
%PERIOD_1 = (map {( 1, 10, 14, 20, 22, 29, 35, 39 )[$_] => 1 } 0..100); #1st period
%PERIOD_2 = (map {( 3, 8, 11, 18, 24, 26, 32, 37 )[$_] => 2 } 0..100); #2nd period
%PERIOD_3 = (map {( 7, 13, 16, 21, 28, 34, 36 )[$_] => 3 } 0..100); #3rd period
%PERIOD_4 = (map {( 5, 2, 6, 15, 17, 23, 27, 31,38)[$_] => 4 } 0..100); #4th period
%PERIOD_5 = (map {( 4, 9, 12, 19, 25, 30, 33, 40 )[$_] => 5 } 0..100); #5th period
%PERIODS = (%PERIOD_1,%PERIOD_2,%PERIOD_3,%PERIOD_4,%PERIOD_5);
open (FILE,"<",$ARGV[0]);
while(<FILE>) {
my @columns = split(/\t/);
print $columns[$COLUMN] . "-" . $PERIODS{$columns[$COLUMN]};
}
close(FILE);
所以这很好用。您会得到如下输出:
37-2
29-1
15-4
6-4
34-3
24-2
5-
它匹配/替换除了 5之外的每个值。我不明白 - 映射中的所有其他键都在哈希中,但出于某种原因,5(并且只有 5)不是。有人可以解释问题是什么吗?编辑:固定格式
编辑:是的,我在代码中使用了警告。不过,我真的不在乎警告(即使它与我的问题有关)-我只想解决问题。如果我愿意理解这个警告,我会问的。