it worked, can you help out what actually
$/ = undef;
would do. I am a newbie to perl try things to understand | [reply] [d/l] |
#!/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 | [reply] [d/l] [select] |
| [reply] |
That's good to hear!
$/ is the input record separator and is essentially used to specify what character should be used to delimit lines. The default input record separator is \n (a.k.a. the newline character).
However, in the context that you have it, $/ = undef; tells perl that there is no input value separator so that the entire line gets read into a scalar on the subsequent line of your script: $_ = <file1>;
| [reply] [d/l] [select] |