Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

How to get a file's full path?

by Bog (Initiate)
on Aug 13, 2005 at 21:47 UTC ( [id://483613]=perlquestion: print w/replies, xml ) Need Help??

Bog has asked for the wisdom of the Perl Monks concerning the following question:

This seems like such a simple question but I don't know it.

Given a file, how do I get it's path/location? You're going to say "duh, if you're given a file, then you must have it's path." But no, what if the file is given on command line? You may only have the filename. You could run cwd() and get the local path, but what if the user typed like "../.././file.xml" or something. Now you have to manually parse the ../'s. (Luckily perl is a good parsing language.) plus it could be like a symlink or something. Or, the file is a real file but one of the directories was a sym link to another directory.

stat() doesn't include the file's path in it's results. http://www.xav.com/perl/lib/Pod/perlfunc.html#item_stat

I can think of some hackish ways to do this but I'm hoping there's something cleaner using the built-in perl functs.

Thanks

Replies are listed 'Best First'.
Re: How to get a file's full path?
by athomason (Curate) on Aug 13, 2005 at 21:52 UTC
    Try File::Spec, namely its rel2abs() function:
    $abs_path = File::Spec->rel2abs( $path ) ; $abs_path = File::Spec->rel2abs( $path, $base ) ;
    It's a builtin module (at least in 5.8.7) so installation shouldn't be a concern.

    Update:
    See also the extended discussion at Absolute pathnames from relative?.

      Try File::Spec, namely its rel2abs() function:
      It's not a function, it's a class method. If you want a function — and I can understand that, try File::Spec::Functions (also standard) instead.
      use File::Spec::Functions qw(rel2abs); $abs_path = rel2abs( $path );

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://483613]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (8)
As of 2024-04-25 08:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found