学习!<br><br>
<div><span class="gmail_quote">在08-5-7,<b class="gmail_sendername">Shan Leiguang</b> &lt;<a href="mailto:shanleiguang@gmail.com">shanleiguang@gmail.com</a>&gt; 写道:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<p><font face="courier new,monospace" size="2">写了个模块Pretty::Table,可以打印比较漂亮的格式对齐的文本表格,可用于生成文本报表或日志文件,请大家测试,欢迎反馈你的意见和建议。<br></font></p>
<p><font face="courier new,monospace" size="2"><br>=head1 Example</font></p>
<p><font face="courier new,monospace" size="2">&nbsp;&nbsp;&nbsp; use Pretty::Table;</font></p>
<p><font face="courier new,monospace" size="2">&nbsp;&nbsp;&nbsp; my $pt = Pretty::Table-&gt;new(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; &#39;row&#39;,&nbsp;&nbsp;&nbsp;&nbsp; #row mode<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data_format&nbsp;&nbsp;&nbsp; =&gt; &#39;ucfirst&#39;, #uppercase the first char<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if_multi_lines =&gt; 1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #enable multi-lines mode<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_col_length =&gt; 10,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #set max_col_length to 10<br>&nbsp;&nbsp;&nbsp; );</font></p>
<p><font face="courier new,monospace" size="2">&nbsp;&nbsp;&nbsp; my $dr = [<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&#39;id&#39;,&#39;name&#39;,&#39;sex&#39;,&#39;age&#39;,&#39;email&#39;], #this is a row<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&#39;01&#39;,&#39;tommy&#39;,&#39;male&#39;,27],<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&#39;02&#39;,&#39;jarry&#39;,&#39;male&#39;,26],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&#39;03&#39;,&#39;shanleiguang&#39;,26,&#39;<a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:shanleiguang@gmail.com" target="_blank">shanleiguang@gmail.com</a>&#39;],<br>
&nbsp;&nbsp;&nbsp; ];</font></p>
<p><font face="courier new,monospace" size="2">&nbsp;&nbsp;&nbsp; $pt-&gt;set_data_ref($dr);<br>&nbsp;&nbsp;&nbsp; $pt-&gt;set_title(&#39;Contacts&#39;);<br>&nbsp;&nbsp;&nbsp; $pt-&gt;set_align(&#39;left&#39;);<br>&nbsp;&nbsp;&nbsp; $pt-&gt;set_data_format(&#39;normal&#39;);<br>&nbsp;&nbsp;&nbsp; $pt-&gt;insert([&#39;04&#39;,&#39;marry&#39;,&#39;female&#39;,26], 4);<br>
&nbsp;&nbsp;&nbsp; $pt-&gt;sort_by(&#39;name&#39;);<br>&nbsp;&nbsp;&nbsp; print $pt-&gt;output();</font></p>
<p><font face="courier new,monospace" size="2">&nbsp;&nbsp;&nbsp; $pt-&gt;set_data_type(&#39;col&#39;); #change to &#39;col&#39; mode<br>&nbsp;&nbsp;&nbsp; $pt-&gt;set_deco_cross(&#39;*&#39;);<br>&nbsp;&nbsp;&nbsp; $pt-&gt;set_if_has_title(0);<br>&nbsp;&nbsp;&nbsp; print $pt-&gt;output();</font></p>

<p><font face="courier new,monospace" size="2">=head1 Example Output</font></p>
<p><font size="2"><font face="courier new,monospace">&nbsp; +---------------------------------------------+<br>&nbsp; | Contacts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; +----+------------+--------+-----+------------+<br>&nbsp; | id | name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | sex&nbsp;&nbsp;&nbsp; | age | email&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; +----+------------+--------+-----+------------+<br>&nbsp; | 01 | tommy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | male&nbsp;&nbsp; | 27&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; +----+------------+--------+-----+------------+<br>&nbsp; | 02 | jarry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | male&nbsp;&nbsp; | 26&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; +----+------------+--------+-----+------------+<br>
&nbsp; | 03 | shanleigua | male&nbsp;&nbsp; | 26&nbsp; | shanleigua |<br>&nbsp; |&nbsp;&nbsp;&nbsp; | ng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | </font><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:ng@gmail.c" target="_blank"><font face="courier new,monospace">ng@gmail.c</font></a><font face="courier new,monospace"> |<br>
&nbsp; |&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | om&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; +----+------------+--------+-----+------------+<br>&nbsp; | 04 | marry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | female | 26&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; +----+------------+--------+-----+------------+</font></font></p>

<p><font size="2"><font face="Trebuchet MS"><font face="courier new,monospace">&nbsp; *-------*-------*-------*------------*--------*<br>&nbsp; | id&nbsp;&nbsp;&nbsp; | 01&nbsp;&nbsp;&nbsp; | 02&nbsp;&nbsp;&nbsp; | 03&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 04&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; *-------*-------*-------*------------*--------*<br>
&nbsp; | name&nbsp; | tommy | jarry | shanleigua | marry&nbsp; |<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | ng&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; *-------*-------*-------*------------*--------*<br>&nbsp; | sex&nbsp;&nbsp; | male&nbsp; | male&nbsp; | male&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | female |<br>&nbsp; *-------*-------*-------*------------*--------*<br>
&nbsp; | age&nbsp;&nbsp; | 27&nbsp;&nbsp;&nbsp; | 26&nbsp;&nbsp;&nbsp; | 26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | 26&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; *-------*-------*-------*------------*--------*<br>&nbsp; | email |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | shanleigua |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | </font><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:ng@gmail.c" target="_blank"><font face="courier new,monospace">ng@gmail.c</font></a><font face="courier new,monospace"> |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | om&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp; *-------*-------*-------*------------*--------*</font></font></font></p><br>_______________________________________________<br>China-pm mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:China-pm@pm.org">China-pm@pm.org</a><br>
<a onclick="return top.js.OpenExtLink(window,event,this)" href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">http://mail.pm.org/mailman/listinfo/china-pm</a><br><br clear="all"></blockquote></div><br>