http://www.perlmonks.org?node_id=1008716


in reply to opened file being overwritten

"..why isnt the filehandle FILE4 being printed out.."

Because when the subroutine finishes the filehandle also closes. Please also check that this in your code open FILE4,"$_[3]" || die "could not open $_[3]"; which has no ">" like the others.
bart you are right, I missed that.
Simply using strict and warnings would have indicated the problems.

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

Replies are listed 'Best First'.
Re^2: opened file being overwritten
by bart (Canon) on Dec 13, 2012 at 20:38 UTC
    That is just so wrong. FILE1...FILE4 are globals, meaning they won't be closed when the sub exits.
Re^2: opened file being overwritten
by perishowl (Initiate) on Dec 13, 2012 at 20:50 UTC

    still not working :(

    #!/bin/Perl use warnings; if (@ARGV < 4) { print ("you need to provide 4 arguments\n\t4th argument is file to + parse"); exit; } $fh = pop(@ARGV); openfile(@ARGV); sub openfile { open FILE1,">$_[0]" || die "could not open $_[0]"; open FILE2,">$_[1]" || die "could not open $_[1]"; open FILE3,">$_[2]" || die "could not open $_[2]"; open FILE4,">$fh" || die "could not open $fh"; while (my $line = <$fh>) { print $line; } }
      i get the warning readline() on unopened filehandle at file.pl line 21. so that would be my while loop while (<$fh>) { print $line; }