Hi all,

I'm new to perl (that's why I'm here :-). I'm building a few cgis allowing 
me to add, modify, delete users in a text file (perl version 5.8.0 on a 
redhat 8 machine).
So far, I've been able to create the form and the perl scripts to add 
users and verify their existence.
I'm now trying to delete one user/record inside my text file.
You will find below the script I wrote.
Actually the temporary file is created the way it should be but I didn't 
succeed in renaming it to users.dat, saying "no such file or directory". 
This should be not possible as the script succeeds in opening users.dat 
and reading from it.

I know that a nicer solution is to use Tie::File but I have to say that 
from the documentation I found I don't really understand how to do it :-(

Thanks in advance for any help

Gael
# value we will read from the html form
my $name=$ARGV[0];

$data_file="users.dat";

# we will read the database record by record, copy each recor to the 
temporary file
# and simply forget to write the record to be deleted.

$tmp_file="users.tmp";

open(DAT, "<$data_file") || die ("Could not open users file!");
open(TMPDAT, ">$tmp_file") || die ("Could not open temporary file!");

while (<DAT>)
{
# extract the username (the first field) from the record
my ($username)=split(/\|/,$_);

# test the name agains the username
if ($name eq $username) {

# we've found the record to delete, so skip it and move to next record
next;
}
# write the original record out to the temporary file
print TMPDAT $_ or die "Error writing $tmp_file: $!\n";
}

close DAT or die ("closing the users file!\n");
close TMPDAT or die ("closing $temp_file: $!\n");

# we delete the old file
unlink $data_file or die ("Can't delete old $data_file: $!\n");

# and rename the new file to replace the old one.
rename ($temp_file, $data_file) or die ("Can't rename '$tmp_file' to 
'$data_file': $!\n");

Reply via email to