in reply to Re^2: Tutorial on File::Find even more basic than "Beginners Guide"
in thread Tutorial on File::Find even more basic than "Beginners Guide"

Ok, well, File::Find is not that hard:
use File::Find; use strict; sub process_file { return unless -f _; # skip processing unless $_ is really a file (no +t a dir) # some code that # does stuff with $_ (contains the "current file") } # call &process_file recursively for each file in /some/directory find \&process_file, "/some/directory";
The rest of File::Find is just "specifics" that you don't need for the problem you're trying to solve.

update: Try using HTML::LinkExtor - something like

use HTML::LinkExtor; my $p = HTML::LinkExtor->new(); sub process_file { return unless /\.html?$/i; # skip unless *.htm / *.html file return unless -f _; # skip processing unless $_ is really a file (no +t a dir) $p->parse_file($_); print $p->links; }

Replies are listed 'Best First'.
Re^4: Tutorial on File::Find even more basic than "Beginners Guide"
by ww (Archbishop) on Jan 20, 2005 at 23:35 UTC
    Joost:

    and another "thank you" goes up, irritating those who regard such as space wasters.

    so I guess I'll also have to seek one additional clarification: in line 11, re file::find, you write:

    find \&process_file, "/some/directory";

    As I understand this (and I think much more clearly, thank you!) I really need to specify all the subdirs, perhaps by stuffing them into an array and feeding each element to the sub?

      You do not have to specify the subdirs of "/some/directory" - File::Find will walk through all the files and subdirs of "/some/directory" recursively. You may want to specify more directories if you want to call the same routine on a number of different directory trees:

      find \&process_file, "/cdrom", "/floppy";
      Will call process_file for each dir and file on the cdrom or floppy drive (well, it will on my machine, but the location of those drives in your filesystem might be different)