in reply to Re: Re: File::Find incompatible with OO perl?
in thread File::Find incompatible with OO perl?

Are you sure you mean $_ and not (after first shift) $_[0]? wanted doesn't get any parameters, so what you have above is only correct if your found() expects the filename via a parameter, not $_.

This works for me:

$ perl -MFile::Find -we'$obj=bless []; sub found { print "looking at $ +_\n" } > find(sub {$obj->found}, "pbed/fooble")' looking at . looking at a looking at b looking at c

Replies are listed 'Best First'.
Re: Re: Re: Re: File::Find incompatible with OO perl?
by vaevictus (Pilgrim) on Feb 10, 2004 at 05:38 UTC

    wanted(), being the non-OO answer, is supposed to recieve a file name via $_. Check the perldoc, it backs me up. Not that I'm saying its the best way that this should have been done, but find is supposed to produce 3 elements for your called subroutine:

    • $File::Find::name => Path + Filename.
    • $File::Find::dir => Path
    • $_ => Filename

    I'm not sure whether it clashes or agrees with your statement. Regardless, I'm getting the data as I think it works, like this:

    Calling:

    find(sub{$obj->found($_)},"dir");

    Called:

    sub found { my $self=shift; my ($full_name, $file_dir,$file_name) = ($File::Find::name,$File::F +ind::dir,@_); }

    Thanks again!!