in reply to Re^4: Trim Two Characters On Line
in thread Trim Two Characters On Line

Your $line usually has a Newline at the end, which will be one of the characters that you are trimming.

If you want the newline back, you have to add it back, e.g.
$line =~ substr( $line, -2, 2, '' ) . "\n"

Replies are listed 'Best First'.
Re^6: Trim Two Characters On Line
by AnomalousMonk (Bishop) on Oct 23, 2020 at 22:18 UTC

    Even after fixing the assignment operator (=~ vice =), that doesn't quite work:

    Win8 Strawberry (32) Fri 10/23/2020 18:12:03 C:\@Work\Perl\monks >perl -Mstrict -Mwarnings -MData::Dump=dd my $line = "foo,bar\n"; $line = substr($line, -2, 2, '') . "\n"; dd $line; ^Z "r\n\n"
    A slight variation does:
    >perl -Mstrict -Mwarnings -MData::Dump=dd my $line = "foo,bar\n"; $line = substr($line, 0, -2) . "\n"; dd $line; ^Z "foo,ba\n"

    Update: Another approach is to completely sidestep the newline:

    >perl -Mstrict -Mwarnings -MData::Dump=dd my $line = "foo,bar\n"; substr($line, -3, 2, ''); dd $line; ^Z "foo,b\n"

    Give a man a fish:  <%-{-{-{-<