use strict; use warnings; my $folder_IN = $ARGV[0]; my $finaltreefile = "./final.CSV"; my $level = 0; my $rootfile = `ls $folder_IN/$level*.CSV`; chomp($rootfile); print "rootfile: $rootfile\n"; open( my $final, '>', $finaltreefile ) or die "$finaltreefile: $!"; treebuilder($rootfile, $level+1); close($final); exit(0); sub treebuilder { my $filename = shift; my $level = shift; my $nextlevel = $level + 1; print "File level $level : $filename\n"; my $PRESENTLEVELFILE; unless(open($PRESENTLEVELFILE, '<', $filename)) { warn "$filename: $!"; return; } my $leafline = <$PRESENTLEVELFILE>; if ( $filename eq $rootfile ) { print $final "0 $leafline"; } while ( my $leafline = <$PRESENTLEVELFILE> ) { print "Leggo $leafline\n"; chomp($leafline); print "next level=$nextlevel\n"; my @element = split( '§', $leafline ); print "Find $element[0]\n"; my $NEXTLEVELFILE = $folder_IN . "/" . $level . "_" . $element[0] . ".CSV"; print "Check if file exists: $NEXTLEVELFILE\n"; print $final "$level $leafline\n"; treebuilder($NEXTLEVELFILE, $nextlevel); } close($PRESENTLEVELFILE); }