in reply to dir / file split

File::Basename and File::Find were released with perl 5.000. If your 5.004 installation is so trashed, you could always download the tarball, pull out the corresponding .pm files and stick them in a subdirectory named 'File'. They're pure-Perl.

Then you just have to use lib '.' and you're home free.

However, if you are brave and insist on the original approach...

I think I'm being a bit paranoid as the first .* is greedy

No, to not do so would possibly be incorrect. You could anchor the end of the match with '$' to help settle the issue for the engine though, and make the latter match non-greedy.

Also be aware of symlinks. If you have a symlink that points back to an ancestor directory, your script will run until the heat death of the universe, or until your machine runs out of swap, whichever comes first.

• another intruder with the mooring in the heart of the Perl

Replies are listed 'Best First'.
Re^2: dir / file split
by camelcom (Sexton) on Sep 28, 2007 at 15:06 UTC
    I have incorporated all suggestions, including the symlink check:

    $file_path =~ /(.*)\/([^\/]+?$)/; my ($dir, $file) = ($1, $2);

    MANY THANKS to all

      I have incorporated all suggestions

      Except the different delimiter :)

        now:
        $file_path =~ m{(.*)/([^/]+?$)}; my ($dir, $file) = ($1, $2);

        Thanks John