我在Perl中有一个数组我希望在每个元素之间使用空格分隔符进行打印,除了每个应该换行符分隔的第10个元素.如果重要的话,元素中没有任何空格.
我已经用for和一个计数器编写了一个函数,但我想知道是否有更好/更短/规范的Perl方式,也许是特殊的连接语法或类似方法.
我的功能来说明:
sub PrintArrayWithNewlines
{
my $counter = 0;
my $newlineIndex = shift @_;
foreach my $item (@_)
{
++$counter;
print "$item";
if($counter == $newlineIndex)
{
$counter = 0;
print "\n";
}
else
{
print " ";
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用List :: MoreUtils :: natatime:
use warnings; use strict;
use List::MoreUtils qw( natatime );
my @x = (1 .. 35);
my $it = natatime 10, @x;
while ( my @v = $it->() ) {
print "@v\n"
}
Run Code Online (Sandbox Code Playgroud)
输出:
C:\Temp> x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
我喜欢这样splice的工作:
sub PrintArrayWithNewlines {
my $n = 10;
my $delim = " ";
while (my @x = splice @_, 0, $n) {
print join($delim, @x), "\n";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2950 次 |
| 最近记录: |