Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re^5: File::Find: Return array of "wanted" files

by Laurent_R (Canon)
on Oct 04, 2013 at 21:50 UTC ( #1056941=note: print w/replies, xml ) Need Help??

in reply to Re^4: File::Find: Return array of "wanted" files
in thread File::Find: Return array of "wanted" files

Yes, in such a case, you want to declare the array before entering the loop. That's what choroba is doing in the suggested code, declaring @found right before entering the loop:

my @found; sub findstuff { my $file = $_; return unless -f $file; my $fullpath = $File::Find::name; if (fgrep(qr/regex/, $file)) { push @found, $fullpath; } }

Replies are listed 'Best First'.
Re^6: File::Find: Return array of "wanted" files
by alpha-lemming (Novice) on Oct 07, 2013 at 16:21 UTC

    So, to push to the array with the array inside the foreach block, I would do this:

    my @array1; my @array2; foreach (@array1) { undef @array2; find(\&mysub, cwd); stuff with @array2 } sub mysub { my $file = $File::Find::name; ..filter stuff here... push(@array2, $file); }

    Or is there a nore elegant way of doing this?

      Why do you undef @array2 within your foreach loop? Do you need a fresh xopoty of @array2 each time? Probably not.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1056941]
[Discipulus]: molex connectors? auto products must have lots of them
[Discipulus]: auto products stores..

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (11)
As of 2017-11-19 20:46 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (282 votes). Check out past polls.