in reply to How to right align outputs of stored data in a variable?

Your second approach would work if you were aligning your template string correctly, and if it were not commented out. I'm assuming you want space-padding:

use List::Util qw(sum); my ($FreqP, $FreqN, $FreqZ) = map {int rand 41600} 0..2; my $Sum = sum($FreqP, $FreqN, $FreqZ); printf ( "Freq(Z+): %16d\n" , $FreqP) ; printf ( "Freq(Z-): %16d\n" , $FreqN) ; printf ( "Freq(0): %16d\n" , $FreqZ) ; printf ( "Total: %19d\n" , $Sum) ;

The output:

Freq(Z+): 32571 Freq(Z-): 25729 Freq(0): 9025 Total: 67325

If you wanted zero padding, just apply the appropriate modification to the printf templates (Insert a 0 character at the start of the field widths):

printf ( "Freq(Z+): %016d\n" , $FreqP) ;

The documentation for printf templates is in sprintf.


Dave

Replies are listed 'Best First'.
Re^2: How to right align outputs of stored data in a variable?
by perlnovice1900 (Novice) on Feb 04, 2017 at 20:16 UTC

    Thank you Dave!

    I did want the padding to make things a little more spaced out, also apologies for keeping the comments in on my second approach.

    I appreciate your help.

    -Steven

      A slight variation that would entail less space-futzing between the columns would be something like:

      c:\@Work\Perl\monks>perl -wMstrict -le "use List::Util qw(sum); ;; my $Sum = sum my ($FreqP, $FreqN, $FreqZ) = map { int rand 41600 } 0. +.2; ;; my $fmt = qq{%-9s%16d \n}; printf $fmt, 'Freq(Z+):', $FreqP; printf $fmt, 'Freq(Z-):', $FreqN; printf $fmt, 'Freq(0):', $FreqZ; printf $fmt, 'Total:', $Sum; " Freq(Z+): 3107 Freq(Z-): 27423 Freq(0): 3837 Total: 34367


      Give a man a fish:  <%-{-{-{-<