将Perl格式化输出发送到less

3

我定义了一个格式如下:

# header format
format STDOUT_TOP = 
pid    ppid   start_addr   uid   gid   state     vsz   rss     name 
--------------------------------------------------------------------------
.

# data format
format STDOUT = 
@>>>  @>>>   @>>>>>>>>>>  @>>>  @>>>  @>>>    @>>>>>  @>>>  @<<<<<<<<<<<<<<<<<<<
$pid, $ppid, $h_next,     $uid, $gid, $state, $vm,    $rss, $name
.

当我将输出内容打印到STDOUT时,调用write函数一切正常,但是当我处理大量数据并需要分页显示时,最好的方法是使用less。当我将程序的输出内容传输给less时,每个新页面的页眉前都会打印一个“^L”字符。
屏幕截图: output of my program piped to less 有没有什么解决方法?因为如果打印了该字符,则我的页眉与数据对齐不上。
非常感谢您的帮助。

你可以将一个大的值赋给特殊变量 $= 来表示你的页面有很多行。但是你会失去输出中每个页面顶部的标题字符串,因为只会有一页。 - mcsi
我会忽略表单换页符,继续生活。 - brian d foy
@briandfoy 如果我想提交这个然后因为格式不对而被扣分,那就太糟糕了。 - Hunter McMillen
1个回答

6

这是一个ASCII正式页符。它在两种情况下可能都会被打印,但是less实际上是在显示它。根据perlformperlvar的说法,Perl正在输出$^L(或在use English下的$FORMAT_FORMFEED)。尝试将该变量设置为空字符串或换行符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接