The 'x' operator simply replicates the value.
'*' x 25 = string of 25 asterisks
(0) x 25 = list of 25 0's
So basically he is initializing each array to have 55 elements whose value is the number 0.
It is a bit confusing, but basically it read as:
for each row
the first column is an index
the second column is an value that goes into the software array at the index position
the third column is an value that goes into the hardware array at the index position
the fourth column is an value that goes into the services array at the index position
And what happens if there is no data in the database? The code doesn't seem to catch that situation. If no rows are returned, the arrays are left full of zeros and thats it. You would need to put "my $count = 0" before the loop, and "$count += 1" inside the loop, and after the loop, if $count is greater than zero, there was data in the database.
Not to mention there is no range checking to make sure the index is valid (again should be 0 through 54, since thats how many elements are in the arrays) or that the values are not null (and null becomes undefined in perl)
Perl / MySQL / HTML CSS