foreach my $plf (@plf_files) { #print $plf; if (grep (/\Q$plf\E/i,@file)) { push @recursive_plfs,$plf; recursion($plf); } } sub recursion { my $plf = shift; #print "\nPLF in recursion:$plf\n"; open my $fh, '<', $plf or die "could not open '$plf' $!"; while (my $line = <$fh>) { chomp $line; #print "\nLINE:$line"; if($line =~ /\/(\w+\.plf)/) { #print "LINE CONDITION:$line"; $match_plf_name = $1; print "MATCH PLF:$match_plf_name\n"; next if $match_plf_name eq $plf; next if ( not grep { /\Q$match_plf_name\E/i } @plf_files); print "IN"; push @recursive_plfs,$match_plf_name; recursion($match_plf_name); } } } foreach my $matchplf (@recursive_plfs) { print $matchplf; }