2

我是 perl 新手,我不知道是否可以在 perl 中操作输出格式。

对于像这样的代码

print "$arOne[i] => $arTwo[i]\n";

我希望输出像

 8 => 9
10 => 25
 7 => 456

如果有可能,那该怎么做?

4

2 回答 2

7

你想用printf.

printf ("%2d => %-3d\n", $arOne[$i], $arTwo[$i]);

格式说明嵌入在和%字母之间。在您的情况下,您打印数字,因此您需要 letter d。左边的d数字指定您要为该号码保留多少位数。在您的情况下,我假设左侧数字最多包含两位数,而右侧数字最多包含三位数字。这可能会有所不同。最后,-前面的3d告诉printf左(而不是右)对齐数字。

于 2013-05-06T13:27:17.577 回答
0

本着 TMTOWTDI-ness 的精神,还有perl 格式的旧设施:

#! /usr/bin/perl

use strict;
use warnings;
use List::MoreUtils qw(each_array);

my @arOne = (8, 10, 7);
my @arTwo = (9, 25, 456);  # @arTwoDeeTwo ?  @ceeThreePO ?
my ($one, $two);

format STDOUT =
@> => @<<
$one,$two
.

# Now write to the format we described above    
my $next_pair = each_array(@arOne, @arTwo);
while (($one, $two) = $next_pair->()) {
  write;
}

更新

请注意,这种“报告生成”功能在当代 perl 编程中很少使用。该printf建议通常更灵活(并且不那么令人惊讶)。然而,似乎很遗憾,更不用说 perl 中的格式与 perl 中的格式有关了。

于 2013-05-06T14:45:25.750 回答