/cgi-bin/data.lib
$datadir = "/home/friendnet/data";

sub make_safe {
    $_ = shift;
    s/([^\x20-\x7e])/sprintf("%%%02X", $1)/eg;
    $_;
}

sub unmake_safe {
    $_ = shift;
    s/%([A-F0-9]{2})/chr(hex(2))/eg;
    $_;
}

sub profile_load {
    ($username) = @_;

    %profile = ();
    open PROFILE, "$datadir/profiles/$username";
    while (<PROFILE>) {
        chomp;
        ($key, $value) = split(/\s*=\s*/);
        $profile{$key} = unmake_safe($value);
    }

    return %profile;
}

sub profile_save {
    ($username, %profile) = @_;

    open PROFILE, ">$datadir/profiles/$username";
    while (($key, $value) = each %profile) {
        print PROFILE "$key = ", make_safe($value), "\n";
    }
    close PROFILE;
}