NAME

Data::ResultsHelper - Perl module to helps sort, paginate and display results sets

OVERVIEW

Data::ResultsHelper was written to help display results that can be thought of as an array of arrays.  I
call the structure results.  Examples abound, and the more I work with it, the more I see examples.  
Search results, stock ticker quotes, email message summaries, a directory listing, sql query results, 
this and so much more!

Data::ResultsHelper takes the results and changes them into a nicely organized hash ref, which can then be
outputted using Template::Toolkit or the like.

EXAMPLE

In the below example, I sub-class the Data::ResultsHelper::HTML.  Data::ResultsHelper is general enough that
results could be outputted in any number of ways: a csv file, XML, etc.  Please consult the Data::ResultsHelper::HTML
perldoc for more information.  I simply write a generate_results method which sets $self->{results}.  If 
$self->{set_cookie} is true, I attempt to cache result sets.  In that case, generate_results would only be 
called to generate fresh results.

#!/usr/bin/perl -w

use strict;

{
  my $self = Helper->new({
    results_dir => '/tmp/stuff',
  });
  print "Content-type: text/html\n\n";
  print $self->results2html;
}

package Helper;

use strict;

use Data::ResultsHelper::HTML;
use base qw(Data::ResultsHelper::HTML);

sub generate_results {
  my $self = shift;
  my $dir = shift || $self->{results_dir};
  my $results = [
    ['File', 'Directory', 'Size', 'Modified time'],
  ];
  require File::Find;
  File::Find::find(sub {
    my $fullpath = $File::Find::name = $File::Find::name;
    my $dir = $File::Find::dir;
    my @stat = stat $fullpath;
    return if($fullpath =~ /^\.\.?$/);
    return if(-d _);
    push @{$results}, [$_, $File::Find::dir, $stat[7], $stat[9]];
  }, $dir);
  $self->{results} = $results;
}

COPYRIGHT

Copyright 2003-2004 Earl Cahill