I am not familiar with any of the modules already proposed, therefore, if they do not work as you would like, I would do as suggested by Mouse Food and preview the data to get the maximum width in each column. These maximum widths will then be used in the format string for output. If possible, perhaps it would be more efficient to get this maximum value when building the array, rather than repeating it twice at the end.
The code below iterates over the entire array to find the maximum column lengths, but it should be easy to adapt if you calculate it along the way. In addition, I wrote this with a cuff and did not test it, but it should give you this idea.
my %maximums = { "Record ID#" => 0, "Cluster" => 0, "Current Build" => 0, "Current Use" => 0 };
source share