The old-fashoned way to do this is with format, and it may be the best.
To do it with printf formats, you will need to construct the format string on the fly, taking account of the length of what you want to print.
Another way I'd consider is with substr:
That doesn't conform to the formats you wanted for the indifidual variables, but an extra hash on the same keys and with format strings as values could provide that to my $val = sprintf ... .my $line = ' ' x 200; my $cols = { 0 => \$var1, 19 => \$var2, 179 => \$var3, 199 => \$var4 }; for (keys %$cols) { my $val = ${$cols->{$_}}; substr $line, $_, length($val), $val; } print MERGE $line, $/;
Your $varN variables want to be an array, but I assume the names have been changed to protect the guilty ;-)
After Compline,
Zaxo
In reply to Re: Formatting an output with printf
by Zaxo
in thread Formatting an output with printf
by fiddler42
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |