perl -i.bak -lpe 's/PERL/perl/g' file
####
{
local ($^I, @ARGV) = ('.bak', 'file');
while (<>) {
s/PERL/perl/g;
print;
}
}
##
##
tie @lines, 'Tie::File', 'file' or die ...;
for (@lines) {
s/PERL/perl/g;
}
untie @lines;
##
##
for (@lines) {
if (//) {
$_ .= $text;
last;
}
}
##
##
unshift @lines, $new; # Or add more than one record
##
##
open DB, "< $database" or die ...;
while () {
chomp;
my ($username) = split /:/;
$db{$username} = $_;
}
sub lookup {
my $user = shift;
return $db{$username};
}
##
##
tie @DB, 'Tie::File', $database or die ...;
for (@DB) {
my ($username) = split /:/, $_;
$recno{$username} = $lineno++;
}
sub lookup {
my $username = shift;
return $DB[$recno{$username}];
}
##
##
sub replace_data {
my ($username, $new_data) = @_;
my $recno = $recno{$username};
if (defined $recno) { # Update existing user
$DB[$recno] = $new_data;
} else {
push @DB, $new_data; # Add new user at the end
}
}
sub update_password {
my ($username, $new_password) = @_;
my $crypted_password = crypt($new_password, random_salt());
my @data = split /:/, lookup($username);
$data[1] = $crypted_password;
replace_data($username, join(':', @data));
}