G'day ibm1620,
You can achieve that with this code:
#!/usr/bin/env perl
use strict;
use warnings;
my $scale
= '1.......10........20........30........40........50........60';
my $max_width = length($scale) - 1;
my $long_string = q{The quick brown fox jumps over the lazy dog};
my @records = (
[qw{79.3 2022 1 8}, $long_string],
[qw{394571 22 10 81}, $long_string],
[qw{123456.78 12345 123 1234}, $long_string],
);
my $sprintf_fmt = '%.2f %d %d %d %n';
my $printf_fmt = "%s%.*s|\n";
print "$scale\n";
for my $record (@records) {
my $used_so_far;
printf $printf_fmt,
sprintf($sprintf_fmt, @{$record}[0..3], $used_so_far),
$max_width - $used_so_far, $record->[4];
}
Output:
1.......10........20........30........40........50........60
79.30 2022 1 8 The quick brown fox jumps over the lazy dog|
394571.00 22 10 81 The quick brown fox jumps over the lazy|
123456.78 12345 123 1234 The quick brown fox jumps over th|
Update:
I've just noticed the '%.2f %d %d %d %n' format would've been better as '%.2f %d/%d/%d %n'
to align with the original OP code.
However, it's purely cosmetic and doesn't affect the functionality or the technique being demonstrated.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.