print MERGE pack('A20A180A200A350',@vars); #### #!/usr/local/bin/perl use Benchmark; use strict; my $count = 10000; my @lists = map { [chr($_+65),chr($_+66),chr($_+67),chr($_+68) ] } 0..22; open(FH1,'>/tmp/x') or die "$!\n"; open(FH2,'>/tmp/y') or die "$!\n"; timethese ($count, { 'pack' => '&use_pack', 'printf' => '&use_printf' } ); sub use_pack { foreach (@lists) { print FH1 pack('A20A180A200A350',@{$_}); } } sub use_printf { foreach (@lists) { printf FH2 "%-20s%-180s%-200s%-350s", @{$_} ; } } #### Benchmark: timing 10000 iterations of pack, printf... pack: 21 wallclock secs (10.10 usr + 9.55 sys = 19.65 CPU) @ 508.91/s (n=10000) printf: 24 wallclock secs (10.90 usr + 9.72 sys = 20.62 CPU) @ 484.97/s (n=10000) Benchmark: timing 10000 iterations of pack, printf... pack: 21 wallclock secs (10.03 usr + 9.75 sys = 19.78 CPU) @ 505.56/s (n=10000) printf: 23 wallclock secs (11.88 usr + 10.72 sys = 22.60 CPU) @ 442.48/s (n=10000)