Question

My code displays all files within the directory, But I need it not to display hidden files such as "." and "..".

opendir(D, "/var/spool/postfix/hold/") || die "Can't open directory: $!\n";
    while (my $f = readdir(D)) 
    {
       print "MailID :$f\n";
    }
     closedir(D);
Était-ce utile?

La solution 3

On a Linux system, "hidden" files and folders are those starting with a dot.

It is best to use lexical directory handles (and file handles).

It is also important to always use strict and use warnings at the start of every Perl program you write.

This short program uses a regular expression to check whether each name starts with a dot.

use strict;
use warnings;

opendir my $dh, '/var/spool/postfix/hold' or die "Can't open directory: $!\n";

while ( my $node = readdir($dh) ) {
  next if $node =~ /^\./;
  print "MailID: $node\n";
}

Autres conseils

It sounds as though you might be wanting to use the glob function rather than readdir:

while (my $f = </var/spool/postfix/hold/*>) {
    print "MailID: $f\n";
}

<...> is an alternate way of globbing, you can also just use the function directly:

while (my $f = glob "/var/spool/postfix/hold/*") {

This will automatically skip the hidden files.

Just skip the files you don't want to see:

while (my $f = readdir(D)) 
  {
     next if $f eq '.' or $f eq '..';
     print "MailID :$f\n";
  }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top