G'day joaase,

Welcome to the monastery.

In addition to the two files you say you have, you've also got '.' (current directory) and '..' (parent directory). That makes four entries in total.

You can check this by printing the directory entries. Something like (code layout tidied):

.... while (my $file = readdir(DIR)) { print "$file\n"; if ($file) { ...

The readdir documentation has example code for excluding '.' and '..'.

Unrelated to your posted issue, I see another problem with:

... while (my $file = readdir(DIR)) { if ($file) { $file_count++; } } ...

"if ($file) {" will always be TRUE: you'll never get to that condition if "my $file = readdir(DIR)" is FALSE. As currently written, that test is completely redundant and should be removed (i.e. replace the whole if block with just "++$file_count;".

Perhaps you wanted a file test operator in the if condition. For instance, "if (-f $file) {" would check for plain files: '.', '..' and any other directories would not be included in the count; this would resolve your original problem.

-- Ken


In reply to Re: count file in directory by kcott
in thread count file in directory by joaase

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • 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:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.