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 设置。
导出以下内容
$tabstop
变量控制每个制表符之间的列位置数。默认值为 8。
请注意,local($tabstop)
不会产生正确的结果,如果你想使用 local
覆盖 $tabstop
,你需要使用 local($Text::Tabs::tabstop)
。
#!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 $_'
Text::Tabs 仅处理制表符 ("\t"
) 和组合字符 (/\pM/
)。它不会对退格键 ("\t"
) 进行反向计数,也不会省略其他非打印控制字符 (/\pC/
),也不会处理任何其他零宽、半宽和全宽字符。
版权所有 (C) 1996-2002,2005,2006 David Muir Sharnoff。版权所有 (C) 2005 Aristotle Pagaltzis 版权所有 (C) 2012-2013 Google, Inc. 您可以在自己的风险下修改、使用、复制和重新分发此模块。尽管上述许可允许这样做,但请不要公开重新分发此代码的修改版本,并将其命名为“Text::Tabs”,除非它通过未修改的 Text::Tabs 测试套件。