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"; } }