I’m trying to remove one line from a text file. Instead, what I have wipes out the entire file. Can someone point out the error?
removeReservation("john");
sub removeTime() {
my $name = shift;
open( FILE, "<times.txt" );
@LINES = <FILE>;
close(FILE);
open( FILE, ">times.txt" );
foreach $LINE (@LINES) {
print NEWLIST $LINE unless ( $LINE =~ m/$name/ );
}
close(FILE);
print("Reservation successfully removed.<br/>");
}
Sample times.txt file:
04/15/2012&08:00:00&bob
04/15/2012&08:00:00&john
It looks like you’re printing to a filehandle which you have not yet defined. At least you haven’t defined it in your sample code. If you enable strict and warnings, you’ll get the following message:
This code should work for you:
A couple of other things to note:
1) Your sample code calls removeReservation() when you mean removeTime()
2) You don’t require the round brackets in your subroutine definition unless your intention is to use prototypes. See my example above.