From b7fd6861218840e1bd037e0c76c4ae699e9ee612 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 29 May 2009 18:18:01 +0200 Subject: Initial commit --- lib/Simplestore.pm | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 lib/Simplestore.pm (limited to 'lib/Simplestore.pm') diff --git a/lib/Simplestore.pm b/lib/Simplestore.pm new file mode 100755 index 0000000..aea8b2b --- /dev/null +++ b/lib/Simplestore.pm @@ -0,0 +1,45 @@ +#!/usr/bin/env perl +## Library for the Simplestore format +## Copyright © 2009 by Daniel Friesel +## License: WTFPL +use strict; +use warnings; + +our (@ISA, @EXPORT, $VERSION); +require Exporter; +@ISA = ('Exporter'); +@EXPORT = ('load', 'save'); +$VERSION = '1.0'; + +sub load { + my $file = shift; + my ($store, $key, $value); + $store = shift if @_; + open(my $handle, '<', $file) or die("Cannot read $file: $!"); + while (<$handle>) { + chomp; + /^(\S+)\s+(.*)$/ or next; + ($key, $value) = ($1, $2); + if (exists($store->{$key})) { + $store->{$key} .= "\n$value"; + } else { + $store->{$key} = $value; + } + } + close($handle); + return($store); +} + +sub save { + my ($file, $store) = @_; + my $key; + open(my $handle, '>', $file) or die("Cannot open $file: $!"); + foreach $key (keys(%$store)) { + foreach (split(/\n/, $store->{$key})) { + print $handle "$key\t$_\n"; + } + } + close($handle); +} + +1; -- cgit v1.2.3