use Modern::Perl; my %data = ( 'LB2241-RCC' => { 'rs6557634' => { 'plex' => 'W30467', 'gt' => 'T', 'file' => 'file1.csv' }, 'rs1032807' => { 'plex' => 'W30569', 'gt' => 'G', 'file' => 'file1.csv' }, } ); foreach my $sample ( keys %data ) { foreach my $snpid ( keys %{ $data{$sample} } ) { my $plex = $data{$sample}->{$snpid}{'plex'}; my $gt = $data{$sample}->{$snpid}{'gt'}; my $file = $data{$sample}->{$snpid}{'file'}; open my $FH, '<', "./$file" or die $!; my $content = join ', ', <$FH>; say "$plex, $sample, $gt, $content"; } } #### W30569, LB2241-RCC, G, T,T,C,CA,GT,T,GA,C,A,G,CT,T,T,CA,AG,TC,G,GA,C,TC,CT,AG,AG,C,GT,GA,G,GA,T W30467, LB2241-RCC, T, T,T,C,CA,GT,T,GA,C,A,G,CT,T,T,CA,AG,TC,G,GA,C,TC,CT,AG,AG,C,GT,GA,G,GA,T