chomp VARIABLE
chomp( LIST )
chomp

这个比 chop 更安全的版本会移除任何与当前 $/ 值(在 English 模块中也称为 $INPUT_RECORD_SEPARATOR)相匹配的尾部字符串。它返回从所有参数中移除的字符总数。它通常用于在您担心最后一个记录可能缺少换行符时,从输入记录的末尾移除换行符。在段落模式 ($/ = '') 下,它会移除字符串中所有尾部的换行符。在贪婪模式 ($/ = undef) 或固定长度记录模式 ($/ 是对整数或类似值的引用;参见 perlvar) 下,chomp 不会移除任何内容。如果省略 VARIABLE,它会对 $_ 进行 chomp 操作。示例

while (<>) {
    chomp;  # avoid \n on last field
    my @array = split(/:/);
    # ...
}

如果 VARIABLE 是一个哈希,它会对哈希的值进行 chomp 操作,但不会对它的键进行 chomp 操作,同时会重置 each 迭代器。

实际上,您可以对任何 lvalue 进行 chomp 操作,包括赋值

chomp(my $cwd = `pwd`);
chomp(my $answer = <STDIN>);

如果您对一个列表进行 chomp 操作,每个元素都会被 chomp 操作,并返回移除的字符总数。

请注意,当您对任何不是简单变量的东西进行 chomp 操作时,括号是必需的。这是因为 chomp $cwd = `pwd`; 被解释为 (chomp $cwd) = `pwd`;,而不是您可能期望的 chomp( $cwd = `pwd` )。类似地,chomp $a, $b 被解释为 chomp($a), $b 而不是 chomp($a, $b)