On 8/16/07, Dan Sopher <[EMAIL PROTECTED]> wrote: > > > Hello. The following code example creates a list of regular files in a > directory. Using File::Find, I'm unable to localize an array to hold the > list of files. Is there a way to create the list with a localized array? > TIA. > > > > #!/usr/bin/perl -w > ## Create a list of regular files in a directory. > > use strict; > use File::Find; > > my @list; ## Don't want this here > if (1) { > ## I'd like @list to be localized to this scope, > ## and not in main > > find ( { wanted=>\&found, no_chdir=>1 }, "/var/SAMPLES" ); > > print @list; > } > > sub found { > push @list, $_ if -f $_; > }
There are a couple ways, but the my favorite is what is called a closure: #!/usr/bin/perl use strict; use warnings; use File::Find; if (1) { my @list; find ( { wanted => sub { push @list, $_ if -f }, no_chdir=>1 }, "/var/SAMPLES" ); print @list; } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/