下面是我尝试操作的数据列表。我想拆分列并以不同的排列重新连接它们。
我想将数组的最后一个元素与第三个元素交换,但我遇到了问题。 由于数组的最后一个元素在末尾包含一个行字符,因此当我将其切换为第三个时,它会将所有内容都向下踢一行。
代码
while (<>) {
my @flds = split /,/;
DO STUFF HERE;
ETC;
print join ",", @flds[ 0, 1, 3, 2 ]; # switches 3rd element with last
}
样本数据
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
我的结果 - 被踢下线。
1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name,Hello
*期望的结果**
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
我知道它与 chomp 有关,但是当我 chomp 第一个或最后一个元素时,所有\n 都会被删除。 当我对介于两者之间的任何东西使用 chomp 时,什么也没有发生。有人可以帮忙吗?
最佳答案
chomp
从参数中删除尾随换行符。由于您的四个字段实际上都不应该包含换行符,因此这可能是您出于数据处理目的而想要执行的操作。您可以在将行拆分为字段之前使用 chomp
删除换行符,然后使用最终的打印语句在每条记录后添加换行符:
while (<>) {
chomp; # Automatically operates on $_
my @flds = split /,/;
DO STUFF HERE;
ETC;
print join(",", @flds[0,1,3,2]) . "\n"; # switches 3rd element with last
}
关于arrays - 如何使用 chomp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677789/