Perl program help on opendir and readdir

AlphaA picture AlphaA · Nov 26, 2010 · Viewed 7.2k times · Source

So I have a program that I want to clean some text files. The program asks for the user to enter the full pathway of a directory containing these text files. From there I want to read the files in the directory, print them to a new file (that is specified by the user), and then clean them in the way I need. I have already written the script to clean the text files.

I ask the user for the directory to use:

chomp ($user_supplied_directory = <STDIN>); 
opendir (DIR, $user_supplied_directory);

Then I need to read the directory.

my @dir = readdir DIR;

foreach (@dir) {

Now I am lost.

Any help please?

Answer

Doug picture Doug · Nov 26, 2010

I'm not certain of what do you want. So, I made some assumptions:

  • When you say clean the text file, you meant delete the text file
  • The names of the files you want to write into are formed by a pattern.

So, if I'm right, try something like this:

chomp ($user_supplied_directory = <STDIN>);

opendir (DIR, $user_supplied_directory);
my @dir = readdir DIR;

foreach (@dir) {
    next if (($_ eq '.') || ($_ eq '..'));

    # Reads the content of the original file
    open FILE, $_;
    $contents = <FILE>;
    close FILE;

    # Here you supply the new filename
    $new_filename = $_ . ".new";

    # Writes the content to the new file
    open FILE, '>'.$new_filename;
    print FILE $content;
    close FILE;

    # Deletes the old file
    unlink $_;
}