Using
aitap's answer for finding the 'b's in Company_A, (I think the assignment to '
()' isn't necessary), I reproduced your output with this code.
#!/usr/bin/perl
use strict;
use warnings;
use 5.014;
use Data::Dumper;
my %hash = ( Company_A => {
Identifier_1 => ['a', 'b'],
Identifier_2 => ['b', 'g'],
Identifier_3 => ['c']
},
Company_B => { Identifier_1 => ['a'],
Identifier_2 => ['g'],
Identifier_3 => ['x']
});
my $b_count = map { grep {$_ eq 'b'} @$_ } values %{ $hash{Company_A}
+};
for my $company (sort keys %hash) {
my (@ones, @multi);
my $href = $hash{$company};
for my $id (sort keys %$href) {
my $aref = $href->{$id};
if (1 == @$aref) {
push @ones, $aref->[0];
}
else {
push @multi, $aref;
}
}
if (@multi) {
for my $m (@multi) {
print "$company ", join(",", @$m, @ones), "\n";
}
}
else {
print "$company ", join(",", @ones), "\n";
}
}
C:\Old_Data\perlp>perl t6.pl
Company_A a,b,c
Company_A b,g,c
Company_B a,g,x