# db8_read_simple - Perl function for reading records in the DB822 format # A very simple implementation # 2000-2017 Vlado Keselj, version 1.4 sub db8_read_simple { my $arg = shift; my $db = []; while ($arg) { if ($arg =~ /^([ \t\r]*(#.*)?\n)+/) { $arg = $'; } last if $arg eq ''; my $record; if ($arg =~ /([ \t\r]*\n){2,}/) { $record = "$`\n"; $arg = $'; } else { $record = $arg; $arg = ''; } my $r = {}; while ($record) { $record =~ /^[ \t]*([^\n:]*?)[ \t]*:/ or die "db8: no attribute"; my $k = $1; $record = $'; while ($record =~ /^(.*)(\\\r?\n|\r?\n[ \t]+)(\S.*)/) { $record = "$1 $3$'" } $record =~ /^[ \t]*(.*?)[ \t\r]*\n/ or die; my $v = $1; $record = $'; $r->{$k} = $v; # no check for duplicate $k! } push @{ $db }, $r; } return $db; }