| Sign In/My Account | View Cart |
|
|
We've expanded our Perl news coverage and improved our search! Search for all things Perl across O'Reilly!
9.4. Recognizing Two Names for the Same File9.4.1. ProblemYou want to determine whether two filenames in a list correspond to the same file on disk (because of hard and soft links, two filenames can refer to a single file). You might do this to make sure that you don't change a file you've already worked with. 9.4.2. SolutionMaintain a hash, keyed by the device and inode number of the files you've seen. The values are the names of the files:
9.4.3. DiscussionA key in %seen is made by combining the device number ($dev) and inode number ($ino) of each file. Files that are the same will have the same device and inode numbers, so they will have the same key. If you want to maintain a list of all files of the same name, instead of counting the number of times seen, save the name of the file in an anonymous array.
The $; variable contains the separator string using the old multidimensional associative array emulation syntax, $hash{$x,$y,$z}. It's still a one-dimensional hash, but it has composite keys. The key is really join($; => $x, $y, $z). The split separates them again. Although you'd normally just use a real multilevel hash directly, here there's no need, and it's cheaper not to. 9.4.4. See AlsoThe $; ($SUBSEP) variable in perlvar(1), and in the "Special Variables" section of Chapter 28 of Programming Perl; the stat function in perlfunc(1) and in Chapter 29 of Programming Perl; Chapter 5 View the past week's recipes: Today | Yesterday | 3 days ago | 4 days ago | 5 days ago | 6 days ago | A week ago
|
|
Sponsored By: |