in reply to Re: help with error 'readline() on unopened filehandle'
in thread help with error 'readline() on unopened filehandle'

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
  • Comment on Re^2: help with error 'readline() on unopened filehandle'

Replies are listed 'Best First'.
Re^3: help with error 'readline() on unopened filehandle'
by 2teez (Vicar) on Feb 03, 2013 at 08:19 UTC

    Hi bhargavkanakiya,
    from your code:

    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
Re^3: help with error 'readline() on unopened filehandle'
by Anonymous Monk on Feb 03, 2013 at 07:59 UTC
    You need to "open" your input file dummy

      i understood that and updated the code as

      ... 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.

      A reply falls below the community's threshold of quality. You may see it by logging in.