#!/usr/bin/perl -w
use HTML::Template;
use CGI qw (:standard);
use CGI::Carp qw(fatalsToBrowser);
use DB_File;
@fields = ("title","date","author","news");
$q = new CGI;
print $q->header;
my $template = HTML::Template->new(filename => 'news.tmpl');
$filename="database.db";
tie(%hash, "DB_File", $filename) or die "Can't open $filename: $!";
#add();
my @loop_data = (); # initialize an array to hold your loop
my @keys = ();
my @values = ();
get_values();
sub get_values {
while (($key,$value) = each %hash) {
push(@keys, $key);
push(@values, $value);
}
}
while (@keys and @values) {
my %row_data; # get a fresh hash for the row data
# fill in this row
$row_data{KEY} = shift @keys;
$row_data{VALUE} = shift @values;
# the crucial step - push a reference to this row into the loop!
push(@loop_data, \%row_data);
}
my @newfields = ();
foreach $field (@fields){
push(@newfields, $field);
}
while (@newfields) {
get_values();
my %nf_row_data;
$nf_row_data{FIELD} = shift @newfields;
push(@field_data, \%nf_row_data);
}
#delete();
untie %hash;
$template->param(
SHOW_ALL_LOOP => \@loop_data,
FIELD_LOOP => \@field_data);
print $template->output;
sub add {
$key = time();
$record = $key;
foreach $field(@fields){
$record .= "\|$field";
}
$hash{$key} = "$record";
}
sub delete {
%hash = ();
}