<?xml version="1.0" encoding="windows-1252"?>
<node id="75004" title="Triangle Golf" created="2001-04-24 10:23:31" updated="2005-08-13 01:11:16">
<type id="1042">
CUFP</type>
<author id="11819">
nashdj</author>
<data>
<field name="doctext">
A friend of mine recently had an assignment where he had to split up a text file and print it out as a triangle. Of course this was in "c" and so, just because I could I had to see just how simple it would be in perl.

The idea is to take a ctriangle.txt file like 
&lt;code&gt;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&lt;/code&gt;
and end up centered over 80 chars
&lt;code&gt;       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&lt;/code&gt;
&lt;code&gt;          The
         same
       principle
      applies to
    any text file,
  basically splitting
 words only on spaces
     or new lines&lt;/code&gt;
My best shot was 132 chars (\n inc). I especially like the new trick I learnt. &lt;code&gt;/[ 
]+/&lt;/code&gt;Which matches space/new line combinations.
&lt;p&gt;
Well this is the best I could do, after staring at it for half an hour it wasnt getting any shorter.
&lt;code&gt;open F,"ctriangle.txt";sub n{print
" "x(40-$r/2)."$x\n"};for(split/[ 
]+/,join'',&lt;F&gt;){$c=$r,n,$x=''if(
$r=length($x.=" $_"))&gt;$c}n&lt;/code&gt;
- nashdj
&lt;p&gt;
&lt;b&gt;Update:&lt;/b&gt;&lt;br&gt;
With [jeroenes] idea, if I undef $/ by assigning it undef from an unused variable (not pretty but we're talking size) its down to 128 chars.
&lt;code&gt;open F,"ctriangle.txt";sub n{print
" "x(40-$r/2)."$x\n"};$/=$w;$_=&lt;F&gt;;
for(split){$c=$r,n,$x=''if(
$r=length($x.=" $_"))&gt;$c}n&lt;/code&gt;</field>
</data>
</node>
