我想加入第一个到第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)
我不会按你做的那样去做.
相反,我会:
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为空.