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