将元素连接到数组中并与空格分开

tim*_*tim 0 perl join

我想加入第一个到第16个单词和第17个到第31个等,在一个数组中,空格到一行,但不知道为什么代码不起作用.希望在这里得到帮助.谢谢

my @file = <FILE>;
for ( $i=0; $i<=$#file; $i+=16 ){
    my $string = join ( " ", @file[$i..$i+15] );
    print FILE1 "$string\n";
}
Run Code Online (Sandbox Code Playgroud)

以下是我档案的一部分.

1
2
3
...
Run Code Online (Sandbox Code Playgroud)

我要打印的是

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17 18 19 20 21....
Run Code Online (Sandbox Code Playgroud)

Sob*_*que 5

我不会按你做的那样去做.

相反,我会:

open ( my $input, '<', "your_file_name" ) or die $!;
chomp ( my @file = <$input> ); 
print join (" ",splice (@file, 0, 15)),"\n" while @file;
Run Code Online (Sandbox Code Playgroud)

注意 - 我使用了一个带有3参数的词法文件句柄,因为这是更好的风格.

splice@file每次迭代中删除前16个元素,并继续直到@file为空.