A common Perl FAQ is "How do I do (something) for every file in a directory?"
Here's some sample code that will show you how to loop through each file in a directory:
$dirname = '.';
opendir(DIR, $dirname) or die "Could not open $dirname\n";
while ($filename = readdir(DIR)) {
  print "$filename\n";
}
closedir(DIR);
In this case my directory was the current directory, represented by ".", but it could have been another directory, like /tmp, or any other directory.
Notes about directories
As you might guess from looking at that code, the opendir, readdir, and closedir are the directory equivalents of the file operators open, <>, and close, respectively.
Test to see if it's really a file
You'll probably also want to test that what you get back from the readdir operator is actually a file, and not something else, like a directory, a link, or a pipe. Here's a simple way to test that each "file" is really a plain file:
$dirname = '.';
opendir(DIR, $dirname) or die "Could not open $dirname\n";
while ($filename = readdir(DIR)) {
  print "$filename\n" if -f $filename;
}
closedir(DIR);
Note that all I did there was add this test to the print line:
if -f $filename
where the -f operator determines whether the file is a regular file.
Using the glob operator
Finally, you can also use the glob operator if you prefer, something like this code sample:
@files = glob("*.*");
foreach $file (@files) {
  print "$file\n" if -f $file;
}
I'll write more about the glob operator in other tutorials, but hopefully that's enough to whet your appetite.










