By following the principle of Separation of Concerns you would make your code more clear and easier to maintain. Beyond that, if this code is part of a larger project and you are displaying lots of HTML, then following CountZero's suggestion would be a good idea, but I'm not going to do that in this example.
Just be aware of OOM issues since you would be storing all rows in memory up to 2x - once in CQ and once in perl - but at least 1x in perl depending on how CQ implements cursors.
Also note that following SoC will sometimes make your code less efficient, like this case where we use multiple loops when we could have collapsed them such as in my first reply, but that's a judgement call for you to make on legibility & maintainability vs. efficiency.
Btw, you should use strict; use warnings;. Hope this helps!
$resultSet->Execute() or die "resultset error\n" ;
my @all_rows ;
push @all_rows, {
Environment => $resultSet->GetColumnValue(1),
Release => $resultSet->GetColumnValue(2),
Project => $resultSet->GetColumnValue(3),
VLS_Name => $resultSet->GetColumnValue(4),
AppServerName => $resultSet->GetColumnValue(5),
State => $resultSet->GetColumnValue(6),
URL => $resultSet->GetColumnValue(7),
} while ($resultSet->MoveNext() == $CQPerlExt::CQ_SUCCESS) ;
print row2html($_) foreach (@all_rows) ;
# debug
# use Data::Dumper ;
# print "debug:\n", Dumper($_), "\n" foreach (@all_rows) ;
sub row2html {
my $row = shift ;
return "
<table border='1' cellpadding='8' bgcolor='#CCD6F5'>
<tr>
<td><input type='checkbox' value='$row->{VLSName}'/></td>
<td>$row->{Release}</td>
<td>$row->{Environment}</td>
<td width='160'>$row->{Project}</td>
<td width='430'><a href='$row->{URL}'>$row->{URL}</a></td>
</tr>
</table>
" ;
}
|