Thanks! can you please look at the updated code and see where the error is? i saw that i made that mistake but still i am facing the same error | [reply] |
foreach my $filename( @files ){
my $file = "text_000".$variable."."."lab";
my $outfile = "$outdirname/"."$file";
open my $output , ">$outfile" || die "Can't open the output file!"
+;
print "file: $file\n";
while ( my $line = <$filename> ) {
$line =~ s/^\s+//;
$line =~ s/ +/ /g;
$line =~ s/\s+$/\n/g;
print $output $line;
}
close ($output);
$variable++;
}
$filename is the name of the file to open, and read from. In your code, "$filename" is not a FILEHANDLE.
In Perl Programming, you need a file-handle in the open function like thus:
open FILEHANDLE,MODE,EXPR Note: that you are not opening, your file named "$filename" to read from. You are just using it in the while loop with readline function as while ( my $line = <$filename> ) {...} which should really be while ( my $line = <FILEHANDLE> ) {...}
So, your code should be something like:
foreach my $filename( @files ){
my $file = "text_000".$variable."."."lab";
my $outfile = "$outdirname/"."$file";
open my $output,'>',$outfile or die "Can't open the output file: $
+!"; ## updated
open my $fh,'<',$filename or die "can't open file: $!"; ## add
+ed
print "file: $file\n";
while ( my $line = <$fh> ) {
$line =~ s/^\s+//;
$line =~ s/ +/ /g;
$line =~ s/\s+$/\n/g;
print $output $line;
}
close $fh or die "can't close file: $!"; ## added
close $output or die "can't close file: $!"; ## updated
$variable++;
}
NOTE: All codes are not tested please.
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me
| [reply] [d/l] [select] |
You need to "open" your input file dummy
| [reply] |
...
open my $MYFILE , "<$filename" || "Can't open the output file!";
...
then the error changed to 'readline() on closed filehandle $MYFILE' even though i have not closed the file. this is the first code that i've written using perl and i am completely new to it. any help is appreciated. thanks. | [reply] [d/l] |