life_1,23032018,a_0300,true,3 life_1,23032018,a_0200,true,4 life_1,23032018,a_0100,true,3 life_1,23032018,c_0300,true,21 life_1,23032018,c_0200,true,21 life_1,23032018,c_0100,true,25 life_1,23032018,d_0300,true,23 life_1,23032018,d_0200,true,21 life_1,23032018,d_0100,true,24 #### 201810021569661,23032018 201810021569678,23032018 201810021569685,23032018 201810021569708,23032018 201810021569715,23032018 201810021569722,23032018 201810021569739,23032018 201810021569746,23032018 201810021569753,23032018 201810021569760,23032018 #### Loop tot->3 life_1,201810021569661,a_0300 life_1,201810021569678,a_0300 life_1,201810021569685,a_0300 Loop tot->4 life_1,201810021569661,a_0200 life_1,201810021569678,a_0200 life_1,201810021569685,a_0200 life_1,201810021569739,a_0200 Loop tot->3 life_1,201810021569661,a_0100 life_1,201810021569678,a_0100 life_1,201810021569685,a_0100 #### Loop tot->3 life_1,201810021569661,a_0300 life_1,201810021569678,a_0300 life_1,201810021569685,a_0300 Loop tot->4 life_1,201810021569708,a_0200 life_1,201810021569715,a_0200 life_1,201810021569722,a_0200 life_1,201810021569739,a_0200 Loop tot->3 life_1,201810021569746,a_0100 life_1,201810021569753,a_0100 life_1,201810021569760,a_0100 #### use strict; use warnings; use Data::Dumper qw(Dumper); my $filea = FileA; my $fileb = FileB; open ( FA, '<', $filea) || die ( "File $filea Not Found!" ); open ( FB, '<', $fileb) || die ( "File $fileb Not Found!" ); my %ts; while ( ) { chomp; my($ids, $timestamp) = split ","; push @{ $ts{$timestamp} }, $ids; } while ( ) { chomp; my($life,$timestamp,$cls,$bool,$tot) = split ","; print STDERR "Loop tot-> $tot"; scalar ; for my $ids ( @{ $ts{$timestamp} } ) { last if $tot-- < 1; print join(",",$life, $ids, $cls )."\n"; } }