Here is an earlier reply I did using format with aligned columns using sprintf: https://www.perlmonks.org/?node_id=11136290
sample output from that thread:
Package Coverage
+ Line Method Branch
------------------------------------------------------------------
+-------------------------------------------------------
| com.gandu.base.alltests | 90%
+| 91% (20/22) | 50% (1/2) | 0% (0/0) |
| com.gandu.base.commons | 47%
+| 43% (579/1336) | 34% (73/213) | 41% (111/270) |
| com.gandu.base.commons.status | 27%
+| 27% (103/388) | 46% (25/54) | 8% (5/60) |
| com.gandu.base.commons.test | 94%
+| 84% (62/74) | 85% (11/13) | 100% (6/6) |
| com.gandu.base.commons.validchecker | 90%
+| 90% (9/10) | 50% (1/2) | 0% (0/0) |
| com.gandu.base.commons.validchecker.arghandler | 12%
+| 8% (115/1404) | 8% (8/99) | 0% (0/350) |
| com.gandu.base.commons.validchecker.centralarea | 26%
+| 37% (111/297) | 65% (17/26) | 56% (47/84) |
| com.gandu.base.commons.validchecker.testtag | 85%
+| 82% (613/748) | 82% (93/114) | 53% (90/170) |
| com.gandu.base.consoleindependentcommons | 91%
+| 91% (79/87) | 82% (14/17) | 90% (18/20) |
------------------------------------------------------------------
+-------------------------------------------------------
Fun stuff!