这个比 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)
。