Used in a loop iterating over the contents of a directory,
$fn should contain the name of a file, and
$entry should contain a qualified path (but not necessarily an absolute path) to that file.
-d checks if the file is a directory.
Anything other than a directory will be ignored.
$fn !~ m/ˆ\.\.?$/ checks if the file is named something other than ".", "..", ".\n" or "..\n".
On Windows and unix systems, . and .. are special directories which link to the current and the parent directory respectively.
(Checking for ".\n" and "..\n" is a bug. Changing $ to \z would fix this.)
Therefore, of the files over which the loop containing that line iterates, the body of the if is called only for those that are subdirectories.
The body of the if calls find on each subdirectory and accumulates the results in @matches.
|