with this u can store on the server an hash of array (with 3 elements in the example).The keys are hidden in the page and are incremental id (1 2 ..).You can add or delete entries and all the resulting hash is stored on the file system.Need grinder.hth lor*
#!perl use strict; use warnings; use CGI qw(:all -nph); use Storable; my $hoa = {}; my $file = 'stored.sto'; my $indice = 0; my @sorted; print header(), start_html(-bgcolor=>"#000099", -text=>"#FF9933", -link=>"#FFFF00", -alink=>"#FFFF00", -vlink=>"#FFFF00"); print start_form({-name=>'form1'}), textfield({-name=>'text1'}), textfield({-name=>'text2'}), textfield({-name=>'text3'}), submit({-value=>'add'}), endform(); print hr; if (-e $file) { $hoa = retrieve $file } if (defined %$hoa){ @sorted = sort{ $b <=> $a } keys %$hoa; $indice = $sorted[0]+1; } ###############################################defined param text1 if (defined param('text1')&&param('text1')=~/\w/) { $$hoa{$indice}= [param('text1'),param('text2'),param('text3')]; store \%$hoa, $file||die "not stored!"; Delete_all(); } if (-e $file) { $hoa = retrieve $file } ############################################### foreach my $delenda(keys %$hoa) { if (defined param($delenda)) { delete $$hoa{$delenda}; } } store \%$hoa, $file||die "not stored!"; ############################################### print start_form({-name=>'form2'}); foreach my $k(reverse sort{ $b <=> $a } keys %$hoa) { print table({-title=>$k, -bgcolor=>"#000000", -border=>1, -bordercolor=>"red", -cellspacing=>"0", -cellpadding=>"0"}, td([ @{$$hoa{$k}}, checkbox(-name=>$k,-label=>'delete') ]) ),br; } print submit({-label=>'execute'}); print endform(); end_html();