Perl Array chop() and chomp() Function - Quick Tutorial

Man working on laptop
Rob Melnychuk/Stockbyte/Getty Images

Perl's chop and chomp functions can often be a source of confusion. Not only do they sound similar, they do similar things. Unfortunately, there is a critical difference—​chop removes the last character of the string completely, while chomp only removes the last character if it is a newline.

 $myName = "Jacob\n";

Chomping $myName cuts off the last newline, leaving just Jacob.

Once it's been chomped, further chomping won't do anything at all. Chopping the name, however, will result in the last character being removed, leaving Jaco:

 $myName = "Jacob";

Chomping and chopping an array results each element being acted on, and can be a real time saver.


So remember - Chop chops off the last character without question or regret. Chomp only removed the newline, leaving the string itself intact. Chomp does not remove all whitespace characters by default. In fact, by default, chomp only removes what is currently defined as the $INPUT_RECORD_SEPARATOR. If your goal is to trim all whitespace from the end of your string, try using a regex like this one submitted by a reader:

 $line =~ s/\s*$//g;