#!/usr/bin/env perl use strict; use warnings; my @messages = ( ['Mapping a drive to build machine 10.211.32.254..', 'done'], ['Mapped to V drive'], [], ['Deleting TestHarness_LUA directory..', 'done'], [], ['Deleting TestHarness_LUA-distribution.zip file..', 'done'], [], ['Copying TestHarness_LUA-distribution.zip from mapped V drive..', 'done'], ); for my $msg (@messages) { for (scalar @$msg) { $_ == 0 && do { print "\n"; last }; $_ == 1 && do { print_long_line($msg->[0]); print "\n"; last }; $_ == 2 && do { print_long_line($msg->[0]); print "$msg->[1]\n" }; } } sub print_long_line { print join "\n" => map { sprintf "%-55s" => $_ } shift =~ /(.{1,52})\b\s*/g; }