Miscellaneous general commentary:
- You shouldn't use /^\.\.?$/ to throw away the special directories. $ will disregard a trailing newline, so you'll trip over files named "..\n" and such. The proper pattern would be /\A\.\.?\z/, but two humble eqs will do just as well ($_ ne '.' and $_ ne '..').
- As already mentioned, the file tests and everything else works off of the current directory, so you need to prepend any path you want to them to be relative to to the filename.
- You're looping over the filename list three times: once in the grep, then twice in one additional foreach loop per test. A lot of duplicated work.
- You first throw away the special directories, then every other entry that starts with a dot. Since both special directories start with a dot, why not pull these tests together?
Try something like this:
#!/usr/bin/perl -w
use File::Spec::Functions qw(catfile);
use strict;
my @users = qw(/home/zentara);
foreach $homedir (@users) {
my $dh;
opendir $dh, $homedir
or warn "Cannot readdir $homedir:$!\n";
my @files =
grep /\A[^.]/ and -f catfile($homedir, $_),
readdir DIR;
print "@files\n" . "#"x47 ." \n";
}
exit;
File::Spec::Functions provides importable versions of File::Spec's crossplatform functions for de/constructing pathnames. These modules are in the Perl core.
Update: s/readdir DIR/readdir $dh/
Makeshifts last the longest.
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.