我有这段代码非常适合我列出属于特定值箱的对象。唯一的问题是我无法获得带有空格或制表符分隔符的输出。
use strict;
use warnings;
use 5.14.0;
my $file = "test_counter.txt";
open DATA, '<', $file or die "$!";
my %hash;
while (<DATA>){
next if /^\s*$/m; )
my ($key1,$key2,$val) = /^(\w.+)\|(\w.+) (1|(\d+)(\.(\d+)))$/;
$val = int($val*10)/10;
$hash{$val}{$key1}++;
$hash{$val}{$key2}++;
}
for (-10..10){
$_ = $_/10;
say "$_\t", $hash{$_} ? keys $hash{$_} : '';
}
输入 test_counter.txt 文件如下所示:
data|all 0.12
cup|bed 0.16596
bed|all 0.221
cup|all 0.21123
data|bed 0.388
cup|bed 0.35
bed|data 0.412
data|all 0.5236
data|cup 0.565
bed|all 0.6174
all|cup 0.65
cup|data 0.678
我得到的输出是:
-1
-0.9
-0.8
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1 bedcupdataall
0.2 bedcupall
0.3 bedcupdata
0.4 beddata
0.5 cupdataall
0.6 bedcupdataall
0.7
0.8
0.9
1
我想要相同的,但在对象之间有一个制表符或空格,或者理想情况下,当在 bin 中找不到对象时,一个制表符分隔的输出带有一个空白位置。像这样的东西:
-1
-0.9
-0.8
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1 bed cup data all
0.2 bed cup all
0.3 bed cup data
0.4 bed data
0.5 cup data all
0.6 bed cup data all
0.7
0.8
0.9
1
感谢您的任何建议!