As long as you remember to do a readlink on all segments of the path, then it may work. As long as there aren't any loops. Loops can make two paths be parents of each other. Note however that it's not forbidden for a Unix filesystem to allow directory *hard*links. Not sure if Perl runs on any system that has a filesystem where that is allowed.
As for detecting mounts, stat tells you the device number of a file or directory. I don't know how to get, from Perl and in a portable way, a list of mount points.