Although the answer to your question is "use -l", I wonder if instead of just filtering out the symbolic links, you actually want to filter out everything which is not a plain file (e.g. directories, device nodes, named pipes, sockets, etc).
In that case, the test you want is '-f'. See "perldoc -f -f" for more details.
Also, I like to think that the list-processing commands of perl (map, grep) make for very readable (and shorter) code in this sort of situation.
Some other notes:
- You don't need to put the scalar $directoryName in quotes. All that does is expand to a string containing $directoryName, you can just pass it in directly.
- Using file and directory handles like DIR is slightly poor style. The problem is that these are global names shared with the rest of your code. If you had one dir open with DIR and you called another function which opened another dir in the same way, the two handles would conflict. The better way (as with files and 'open') is to use a lexical scalar variable, as below, for the dirhandle.
- Whenever you do something like opening a dir, it's good to test for failure (a false return from opendir) and if so, to give an error containing the system error code, $!
my $directoryName = '/tmp';
opendir(my $dh, $directoryName)
or die "Can't open dir $directoryName : $!";
my @files = grep { -f "$directoryName/$_" } readdir($dh);
closedir($dh);
print "$_\n" for @files;
The last line (using a one-line for-loop with
$_) is a little terse, and I don't often write it that way, but it's a useful trick to know.
Hope you don't mind the extended comment on your post, I thought I'd take the chance to get a few things off my chest :-)
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.