This safer version of /chop
removes any trailing string that corresponds to the current value of $/ (also
known as $INPUT_RECORD_SEPARATOR in the English module). It returns the total
number of characters removed from all its arguments. It's often used to remove the newline
from the end of an input record when you're worried that the final record may be missing
its newline. When in paragraph mode ($/ = ""), it removes all
trailing newlines from the string. When in slurp mode ($/ = undef) or
fixed-length record mode ($/ is a reference to an integer or the like, see perlvar) chomp() won't remove
anything. If VARIABLE is omitted, it chomps $_. Example:
while (<>) {
chomp; # avoid \n on last field
@array = split(/:/);
# ...
}
|
|
If VARIABLE is a hash, it chomps the hash's values, but not its keys.
You can actually chomp anything that's an lvalue, including an assignment:
chomp($cwd = `pwd`);
chomp($answer = <STDIN>);
|
|
If you chomp a list, each element is chomped, and the total number of characters
removed is returned.
Note that parentheses are necessary when you're chomping anything that is not a simple
variable. This is because chomp $cwd = `pwd`; is interpreted as (chomp
$cwd) = `pwd`;, rather than as chomp( $cwd = `pwd` ) which you might
expect. Similarly, chomp $a, $b is interpreted as chomp($a), $b
rather than as chomp($a, $b).