内容

名称

Text::Tabs - 像 unix expand(1) 和 unexpand(1) 一样展开和收缩制表符

概要

use Text::Tabs;

$tabstop = 4;  # default = 8
@lines_without_tabs = expand(@lines_with_tabs);
@lines_with_tabs = unexpand(@lines_without_tabs);

描述

Text::Tabs 实现了 unix 实用程序 expand(1) 和 unexpand(1) 的大部分功能。给定包含制表符的行,expand 会将这些制表符替换为适当数量的空格。给定包含或不包含制表符的行,unexpand 会在可以节省字节的情况下添加制表符,类似于 unexpand -a 命令。

与旧的 unix 实用程序不同,此模块正确地考虑了每行中可能出现的任何 Unicode 组合字符(例如变音符号)的展开和收缩。这些是不会增加逻辑位置的重叠字符。确保你启用了适当的 Unicode 设置。

导出

导出以下内容

expand
unexpand
$tabstop

$tabstop 变量控制每个制表符之间的列位置数。默认值为 8。

请注意,local($tabstop) 不会产生正确的结果,如果你想使用 local 覆盖 $tabstop,你需要使用 local($Text::Tabs::tabstop)

EXAMPLE

#!perl
# unexpand -a
use Text::Tabs;

while (<>) {
  print unexpand $_;
}

不要使用 shell 的 expand 命令,请使用

perl -MText::Tabs -n -e 'print expand $_'

不要使用 shell 的 unexpand -a 命令,请使用

perl -MText::Tabs -n -e 'print unexpand $_'

BUGS

Text::Tabs 仅处理制表符 ("\t") 和组合字符 (/\pM/)。它不会对退格键 ("\t") 进行反向计数,也不会省略其他非打印控制字符 (/\pC/),也不会处理任何其他零宽、半宽和全宽字符。

LICENSE

版权所有 (C) 1996-2002,2005,2006 David Muir Sharnoff。版权所有 (C) 2005 Aristotle Pagaltzis 版权所有 (C) 2012-2013 Google, Inc. 您可以在自己的风险下修改、使用、复制和重新分发此模块。尽管上述许可允许这样做,但请不要公开重新分发此代码的修改版本,并将其命名为“Text::Tabs”,除非它通过未修改的 Text::Tabs 测试套件。