Documentation for routine chomp

Documentation for routine chomp, assembled from the following types:

class Cool

From Cool

(Cool) routine chomp

Defined as:

sub chomp(Str(Cool))
method chomp()

Coerces the invocant (or in sub form, its argument) to Str, and returns it with the last character removed, if it is a logical newline.

say 'ab'.chomp.chars;                   # OUTPUT: «2␤» 
say "a\n".chomp.chars;                  # OUTPUT: «1␤» 

class Str

From Str

(Str) routine chomp

Defined as:

multi sub    chomp(Str:D  --> Str:D)
multi method chomp(Str:D: --> Str:D)

Returns the string with a logical newline (any codepoint that has the NEWLINE property) removed from the end.

Examples:

say chomp("abc\n");       # OUTPUT: «abc␤» 
say "def\r\n".chomp;      # OUTPUT: «def␤» NOTE: \r\n is a single grapheme! 
say "foo\r".chomp;        # OUTPUT: «foo␤» 

class IO::Handle

From IO::Handle

(IO::Handle) method chomp

Defined as:

has $.chomp is rw = True

One of the attributes that can be set via .new or open. Defaults to True. Takes a Bool specifying whether the line separators (as defined by .nl-in) should be removed from content when using .get or .lines methods.

class IO::CatHandle

From IO::CatHandle

(IO::CatHandle) method chomp

Defined as:

method chomp(IO::CatHandle:D:is rw

Sets the invocant's $.chomp attribute to the assigned value. All source handles, including the active one will use the provided $.chomp value.

(my $f1 = 'foo'.IO).spurt: "A\nB\nC\n";
(my $f2 = 'bar'.IO).spurt: "D\nE\n";
with IO::CatHandle.new: $f1$f2 {
    # .chomp is True by default: 
    (.get xx 2).perl.say# OUTPUT: «("A", "B").Seq␤» 
 
    .chomp = False;
    (.get xx 3).perl.say# OUTPUT: «("C\n", "D\n", "E\n").Seq␤» 
    .close
}