Much cleaner! Putting the increment back in and not skipping a line at the end yields a "more intresting"* result (63 chars):
perl -ln0e's/\s+/ /g;print$"x(40-($c=2+length$&)/2),$&while/.{0$c,}? |
+.+/g' a.txt w.txt
a
a a a
a a a a a
a a a a a a a
a a a a a a a a a
a a a a a a a a a a
The same principle applies
to any text file, basically splitting
words only on spaces or new lines
perl -ln0e's/\s+/ /g;print$"x(40-($c=2+length$&)/2),$&while/.{0$c,}? |
+.+/g' w.txt a.txt
The
same principle
applies to any text
file, basically splitting
words only on spaces or new lines
a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a
(I know, I know. I'm the only one who could possibly still be interested at this point.)
* update "more interesting" meaning more <|triangular|>  (than the original challenge).
And, moving even deeper into 'useless use of code in void context':print($"x(40-($c=2+length$&)/2),$&),$c*=($c<80)while...
will make triangles of files of any length (a step towards automated obfusification?).
p
|