in reply to File editing problem

use CGI or die;

Really. The $INPUT{'users'} indicates you're using something else, which is a might bad idea for many reasons.
my @delete_users = param('users'); my %user = map { /^([^\|]*)\|(.*)/ }, <FILE>; close FILE; delete %user{@delete_users}; open (FILE, ">$datafile") or die "Can't write: $!"; while(my ($usr,$pwd) = each %user) { print FILE "$usr|$pwd\n"; print "$pwd<br>"; } close(FILE);
____________
Makeshifts last the longest.