in reply to add a line based on maxline length

What is the reason for doing my $line = <DATA> followed by the processing code then calling the same processing code within the while (<DATA>) block? If you find yourself writing the same code in your program twice or more, you should place that code in a subroutine. In this case, however, you can process each line within the while block, so take out the code that reads and processes $line being sure to keep the declaration of $maxline outside this block.

What is the purpose of $vc? You don't seem to use it for anything meaningful.

Also, replace the for loop at the end with something like print " " x $maxlength (see perlop for details).