Perl Object Database - Simple Storage Cell
package SimpleCell;
use Storable();
use POSIX();
use IO::File;
use Fcntl ':flock';
#####################################################
sub get_obj
{
my $dir = shift;
my $key = shift;
my $obj = undef;
eval { $obj = Storable::lock_retrieve ($dir . '/' . $key); };
return $obj;
}
#####################################################
sub del_obj
{
my $dir = shift;
my $key = shift;
return unlink ($dir . '/' . $key);
}
#####################################################
sub store_obj
{
my $dir = shift;
my $key = shift;
my $val = shift;
eval { Storable::lock_store ($val, $dir . '/' . $key); };
if ($@) { return -1; };
return 0;
}
#####################################################
sub start_index
{
return store_obj (@_);
}
#####################################################
sub inc_index
{
my $dir = shift;
my $key = shift;
my $i = get_obj ($dir, $key);
if (defined ($i))
{
$i++;
if (store_obj ($dir, $key, $i) == 0) { return $i; }
}
return undef;
}
#####################################################
sub log
{
my $dir = shift;
my $txt = shift;
if ($txt eq '') { return; }
my $stamptime = POSIX::strftime ("%d-%b-%Y %H\:%M", localtime);
my $ip = $ENV {'REMOTE_ADDR'};
if ($ip eq '') { $ip = 'N/A'; }
my $fh = new IO::File;
if ($fh->open (">> $dir/log.txt"))
{
if (flock ($fh, LOCK_EX))
{
print $fh $stamptime . " " . $ip . " : " . $txt . "\n";
flock ($fh, LOCK_UN);
}
$fh->close;
}
}
#####################################################
1;
append.c program
Example of a C server program
Example of a Perl program integrated with Raima DB
SMS Gateway - very easy to use SMS API for developers
|
SMS