d1 c1.1 f1 d1.1
d1 c1.1 f2 d1.2
d2 c1.1 f1 d1.1
d3 c1.1 f1 d1.1
d4 c1.1 f1 d1.1
d4 c1.1 f2 d1.2
d5 c1.1 f4 d1.4
d6 c1.1 f5 d1.5
####
d1 c1.1 f1 d1.1
d1 c1.1 f2 d1.2
d5 c1.1 f4 d1.4
d6 c1.1 f5 d1.5
##
##
#!/usr/bin/perl -w
use strict;
use warnings;
use English;
use FileHandle;
use Exception;
my ($fIn) = $ARGV[0];
open(FILE, "$fIn") || die "ERROR: Can't open $fIn file: $!\n";
my %hash;
my $c_id;
my $d_id;
my $f_var;
while()
{
chomp;
my @data = split(/\s+/, $_);
$c_id = $data[1];
$d_id = $data[3];
$f_var = $data[2];
if(!$hash{$c_id}{$f_var})
{
$hash{$c_id}{$f_var} = $d_id;
}
}
while (( my $k1, my $k2) = each %hash)
{
print "$k1 ";
while (( $k2, my $k3) = each %$k2)
{
print "$k2 $k3 ";
}
print "\n";
}