arrays - 如何使用 chomp

标签 arrays perl chomp

下面是我尝试操作的数据列表。我想拆分列并以不同的排列重新连接它们。

我想将数组的最后一个元素与第三个元素交换,但我遇到了问题。 由于数组的最后一个元素在末尾包含一个行字符,因此当我将其切换为第三个时,它会将所有内容都向下踢一行。

代码

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/

相关文章:

regex - 为什么将此语句视为字符串而不是其结果?

ruby - 是否有时会在没有 'gets' 的情况下使用 'chomp' ?

Java 如何从字符串中删除回车符 (HEX 0A)?

Java ArrayList 类

java - String[] 常量自动排序?如何保持索引顺序?

c - 使用数组汇总调查结果

java - 创建一个像矩阵一样的二维数组

Perl - 命令行输入和标准输入

sorting - 按值对哈希进行排序

perl - Perl 中的 "Use of uninitialized value in scalar chomp"