F1.txt
tom1 a1 b1 c1
bob2 d2 e2 f2
的结果 的
F2.txt
a1 b1 c1 tom1
d2 e2 f2 bob2
各位大家好,任何人都可以帮我解决这个问题。我的工作是将文件中每行的第一个单词移到给定文件的该行的最后一个位置。它如F2.txt所示。这是我尝试过的代码,但是没有得到所需的输出。
use strict;
use warnings;
open FILE1, "<final.l";
open FILE2, ">>finala11.l";
my($line, @line);
while (<FILE1>) {
$line=$_;
chomp($line);
@line = split("\t"," ",$line);
push(@line, shift(@line));
print FILE2 @line,"\n";
}
close (FILE1);
close (FILE2);
我在此文件中获得的输出是:
F3.txt
a1b1c1tom1
d2e2f2bob2
但预期输出如F2.txt所示。你能帮助我找出代码中的错误来获得理想的结果吗?
答案 0 :(得分:2)
您可以使用join:
print FILE2 join("\t", @line),"\n";
或:
print FILE2 "@line\n";
答案 1 :(得分:0)
use strict;
use warnings;
open FILE1, "<final.l";
open FILE2, ">>finala11.l";
my ($line, @line);
while () {
$line = $_;
chomp($line);
@line = split(" ", $line, 2); # <<
push(@line, "\t", shift(@line)); # <<
print FILE2 @line, "\n";
}
close(FILE1);
close(FILE2);
谢谢我刚刚更正了已突出显示并获得所需输出的行
答案 2 :(得分:0)
将autosplit与数组切片结合使用:
$ perl -F/\t/ -lane 'print join "\t", @F[1..$#F,0]' f1.txt > f2.txt