如何以分隔符的形式打印数组,作为除最后一行之外的所有行的最后一个字符

时间:2011-06-03 19:03:10

标签: arrays perl

我有以下内容:

my @array = qw/a b c d e f g h i j/;  
my $elements_per_line =4;

我需要输出看起来像这样:

a | b | c | d |
e | f | g | h |
i | j 

我试过这个:

while (@array) { 
    print join " | ", splice(@array, 0, $elements_per_line), "\n";
}

但是这会在所有3行的末尾产生“|”。

2 个答案:

答案 0 :(得分:2)

这是一种方式:

my @array = qw/a b c d e f g h i j/;
my $elements_per_line =4;

while (@array) {
  print join " | ", splice(@array, 0, $elements_per_line);
  print " |" if @array;
  print "\n";
}

答案 1 :(得分:-1)

不使用连接或拼接的解决方案怎么样?

my $count = 0;
foreach my $element (@array) {
   print "$element | ";
   $count++;
   if (($count % $elements_per_line) == 0) {
       print "\n";
   }
}

不知道它是否与split / join一样高效,但更容易理解。