perl - 如何在不使用 Perl 格式的情况下格式化列?

标签 perl formatting

我经常在 Perl 中打印出列/行数据,比方说,从散列中。

这很简单:

foreach my $k(keys %h)
{
  print $k, "\t", $h{$k}, "\n";
}

但是,如果键恰好有一个不同的长度,那么格式看起来非常参差不齐。我调查了format ,它通常对于我正在寻找的东西来说太重量级了,这是一个“简单”的列行对齐 pretty-print 。

最佳答案

我想你会找到printf有用。这是一个小例子:

printf("%10s\t%10s\n", $k, $h{$k});
## prints "         key\t         value\n"
## prints "  longer_key\t  longer_value\n"

长值不会被截断,您可以在 block 内更改文本对齐方式:

  • %10s - 表示长度为 10 的字符串类型(左对齐)
  • %-10s - 表示长度为 10 的字符串类型(右对齐)

格式的完整列表在 sprintf man page 上.

关于perl - 如何在不使用 Perl 格式的情况下格式化列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1730749/

相关文章:

c - 带有双格式问题的 Printf

perl - 如何使用 Test:WWW::Mechanize 进行重定向?

sql - 使用 PostgreSQL 分块进行 SELECT 查询

perl - 如何提取两个字符串之间的行

perl - 如何使用 WWW::Mechanize 和下拉菜单在 Perl 中导航网页?

python - 正确格式化 pygal 中的数字

formatting - Sublime Text 3 总是使用制表符而不是空格来缩进

C 输出格式问题

perl - 如何禁用 perl 的垃圾收集器?

c - 在 C 语言中如何最好地格式化非常长的字符串常量?