http://qs1969.pair.com?node_id=546374


in reply to Text::Autoformat

Your immediate problem is that x doesn't do what you want. To achieve what you want ("doubling" the commands) you need something like:

push @array, ('@', '@') if scalar(@array) < 10; splice @array, -2, 2 if scalar(@array) >= 10;

However that is only a tiny part of the problem. Your bigest problem is that an array is not appropriate, you need to use a string. Something like this:

use strict; use warnings; use Text::Autoformat; my $str=qw/@/; for my $i(1..10){ $str = autoformat ($str, { justify => 'center' }); print "$str\n"; $str .= "@@" if length ($str) < 10; substr $str, -2, 2, '' if length ($str) > 10; }

However that still fails because you clobber $str each time through the loop. Changing the first two lines in the loop to :

my $newStr = autoformat ($str, { justify => 'center' }); print "$newStr\n";

gets you closer, but leaves another logic problem (bug) which I'll leave you to puzzle over. :)


DWIM is Perl's answer to Gödel