Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Detecting whether two pathes refer to the same file

by kejohm (Hermit)
on Sep 10, 2010 at 13:20 UTC ( [id://859642]=note: print w/replies, xml ) Need Help??


in reply to Detecting whether two pathes refer to the same file

If you are looking to test whether the two paths are referring to the same location (as opposed to the two paths referring to two separate, but identical, files) you could use Cwd::abs_path() on both, then test whether the paths returned are the same. Example:

#!perl use strict; use warnings; use feature qw(:5.12); use Cwd qw(abs_path); say abs_path ('/foo') eq abs_path ('/bar/../foo');

You could also check out some of the File::* modules for working with files, directories, paths, etc.

Update: Link fixed.

Replies are listed 'Best First'.
Re^2: Detecting whether two pathes refer to the same file
by ikegami (Patriarch) on Sep 10, 2010 at 16:14 UTC

    It's a good solution, but I can think of two limitations.

    • That will work for symbolic links (on most devices), but not for hard links (other than "." and "..").

      $ echo foo > a $ ln a b $ cat b foo $ perl -MCwd=abs_path -E'say abs_path($_) for @ARGV' a b /tmp/a /tmp/b

      You might be able to check stat's device plus inode fields to address this limitation on some devices on some systems.

    • It also won't necessarily work across devices (since you could access the same file via two devices). The following all refer to the same file:

      C:\Temp\file \\?\C:\Temp\file # Via UNC path \\localhost\C$\Temp\file # Via localhost \\tribble\C$\Temp\file # Via domain name \\10.0.0.6\C$\Temp\file # Via IP address \\localhost\share\file # Via share Z:\file # Given subst Z: C:\Temp

      In general, this isn't solvable.

      Good points. It depends on whether or not the OP would ever come across those situations.

Log In?
Username:
Password:

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

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

    No recent polls found