On Tue, Dec 24, 2002 at 11:58:56AM -0600, Jeff Lowrey wrote:
> At 12:38 PM -0500 12/24/02, Nestor, John wrote:
> >> tell application "MacPerl"
> >>    activate
> >>    with timeout of 6000 seconds
> >>            set PathString to Do Script "
> >> #!perl -w
> >>
> >>  use File::Find;
> >>
> >> # I should wind up with an array of full paths, right?     
> >>    @files=find(\\&wanted, 'Macintosh HD:');
> >> # I'm playing is safe and returning a string--
> 
> Then why not create a string in the first place?
> 
> > > #I know I can pass strings back and forth--hey, I'm a beginner, 
> > remember?
> >> :)
> >>     $files=join(\",\",@files);
> >>     MacPerl::Reply($files);
> >>   
> >>     sub wanted {
> >> if ($_ =~ m/Pearson Translator/){
> > >           push (@paths, $File::Find::name);
> > >      }
> >>      return @paths;
> 
> Are you sure that you're supposed to return an array from the wanted 
> function?  Are you sure returning "@paths" will actually return the 
> array, and not something else?  Maybe you should return a reference 
> to the array?

The return value of the wanted() function is ignored, so it doesn't matter
what you return.  Whatever you want to do should be done as a side-effect
of the wanted() function; in this case, pushing the file path onto an
array.

my @files;

find(\&wanted, 'Macintosh HD');

my $files = join ',', @files;

sub wanted {
  if ($_ =~ /Pearson Translator/) {
    push @files, $File::Find::name;
  }  
}


Ronald

Reply via email to