A few things to keep in mind as you write more code.
- Always use strict;
- use autodie;
- When opening file handles, don't use a bare file handle. For example, use $file instead of file
- When opening file handles, use three arguments: open my $fh, '>', $filename (see this for a brief explanation)
- I strongly recommend explicitly naming your variables if you and/or your colleagues are learning perl. It can make the code much more readable; for example, compare your while loop to mine.
I quickly cleaned up the code you posted according to my suggestions so you can see them side-by-side:
#!/bin/perl5.8.6
use strict;
use warnings;
use diagnostics;
use File::Basename;
my @files = <../tryremove/*>;
#This is the destination path where the comment removed files are crea
+ted.
my $path1 = "C:/Projects/tryremove/c";
foreach my $file (@files) {
my $filename = basename($file);
open $file1, "<", $file;
open $file2, ">", "$path1/$filename";
while ( my $line = <$file1> ) {
$line =~ s# .* report s? .* ; .* ##sx;
print $file2 $line;
}
close $file1;
close $file2;
}
Disclaimer: It's late and I'm pretty sleepy. Although I think it should be fine, test it to make sure it behaves the same as your fixed script!
- Mike |