http://www.perlmonks.org?node_id=147191


in reply to How do I get the directory containing a given file?

use Cwd qw(abs_path); use File::Basename; my $dir = dirname(abs_path($file));

Turning this into a complete perl program is left as an exercise to the reader.

Replies are listed 'Best First'.
Re: Answer: How do I get the directory containing a given file?
by mobiGeek (Beadle) on Feb 24, 2002 at 19:19 UTC
    use Cwd qw(abs_path); use File::Basename; my $dir = dirname(abs_path("../foo.html"));<BR> print "dir is ($dir)\n";

    yields:

      opendir(../foo.html/..): Not a directory at text.pl line 4
      dir is ()
    

    Other ideas?

      It appears that Cwd::abs_path has issues in 5.6.1 (which seem to be fixed in bleedperl). You can get around this by reversing the calls:

      use Cwd qw(abs_path); use File::Basename; my $dir = abs_path(dirname($file));