try replace your while loop with the following:

while(<LOG>){
        chop;
        @line = split(/\|/);
        next unless(substr($line[0], 0, 8) eq $selectedDate);
        push(@display,{'displayDate'=>$line[0],
                       'pageViwed'=>$line[1],
                       'ip'=>$line[2],
                       'remoteAddy'=>$line[3],
                       'userAgeant'=>$line[4],
                       'referer'=>$line[5]});
}

the problem with your appoach is that when you push the \%rowData reference 
to your @display, it always references the same underlaying %rowData hash. 
that's probably not what you want. i can't actually test the above for you 
right now but you might want to try it out and see how does it differ from 
your original.

david

Renfield wrote:

> Hello,
> 
> I am teaching myself perl. I have become stuck. My script is designed to
> write, read and display log files. I am having a hard time getting the
> correct data from the log file to a template file. My code will match the
> correct lines in the log file but when I pass it to the template it
> displays the first line matched each iteration of the HTML::Template loop.
> I am not sure if it is an error in the way I construct the data or an
> error in how I passing to the template.
> 
> Here is the code
> 
> [.. snip..]
> 
> if ($view eq "detail") {
>   open (LOG, $log_file) or die ("Couldn't open log file -  $log_file -
> $!\n");
>   while (<LOG>) {
>   chomp;
>   @line = split(/\|/, $_);
>   $shortDate = substr($line[0], 0, 8);
>   if($shortDate eq $selectedDate) {
>   push (@displayDate, $line[0]);
>   push (@pageViewed, $line[1]);
>   push (@ip, $line[2]);
>   push (@remoteAddy, $line[3]);
>   push (@userAgeant, $line[4]);
>   push (@referer, $line[5]);
> } else { next }
> $rowData{displayDate} = shift @displayDate;
> $rowData{pageViewed} = shift @pageViewed;
> $rowData{ip} = shift @ip;
> $rowData{remoteAddy} = shift @remoteAddy;
> $rowData{userAgeant} = shift @userAgeant;
> $rowData{referer} = shift @referer;
> push(@display, \%rowData);
> 
> }
> close (LOG) or die ("Couldn't close log file -  $log_file - $!\n");
> 
> $template->param(DETAIL_DATA => \@display);
> 
> [..snip..]
> 
> Also, as I am very new to perl I would be grateful for any general tips.
> 
> Thanks in advance!


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to