sub readin_directory{ if (defined $_[0]){ my @FILEPATHS = @{$_[0]}; #Argument must be a file with nothing without an absolute filename each row my @LIST = (); my @FILELIST = (); foreach my $FILEPATH (@FILEPATHS){ print("\nCurrent Filepath: $FILEPATH\n"); #Open file, store every line in an array index position and close file opendir (DIR, $FILEPATH) or die "Couldn't open given directory!"; #Open directory @LIST = readdir(DIR); closedir(DIR) or die "Couldn't close directory!"; #Close directory #Test whether file is an xml-file what is compulsory foreach my $FILE (@LIST){ #Recursively invoke function if current file is a directory #print("Current File: $FILE\n"); if(-d $FILE){ #Don't wanna have current directory and the one below next if $FILE =~ /^./; #print("Current Directory: $FILE\n"); push(@FILELIST,@{&readin_directory($FILE)}); } elsif ($FILE =~ /\.mp3$/i){ chomp $FILE; if ($FILEPATH =~ /\/$/){ $FILE = $FILEPATH.'/'.$FILE; } else{ $FILE = $FILEPATH.$FILE; } push(@FILELIST, $FILE); } } } print("Warning: Folder seems to be empty!\n") unless(@FILELIST); return \@FILELIST; #Now return array as reference } else{ print("Error: You must specify at least one input directory!\n"); return 1; } }