A regular expression substitution can clean predictable whitespace from a scalar.

substitution A substitution rewrites the matching part of a string.

Trim Text

raw
trim_text.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;

my $raw = "Ada   ";
my $trimmed = $raw;
$trimmed =~ s/\s+\z//;
my $length = length($trimmed);

print "raw=[$raw]\n";
print "trimmed=[$trimmed]\n";
print "length=$length\n";
use strict;
use warnings;

my $raw = "Bob   ";
my $trimmed = $raw;
$trimmed =~ s/\s+\z//;
my $length = length($trimmed);

print "raw=[$raw]\n";
print "trimmed=[$trimmed]\n";
print "length=$length\n";
use strict;
use warnings;

my $raw = "Perl   ";
my $trimmed = $raw;
$trimmed =~ s/\s+\z//;
my $length = length($trimmed);

print "raw=[$raw]\n";
print "trimmed=[$trimmed]\n";
print "length=$length\n";
  1. $raw ← Ada , $trimmed ← Ada , $length ← 3

    4my $raw→ Ada    = "Ada   "; #@raw="Bob   ", "Perl   "5my $trimmed→ Ada    = $rawAda   ;6$trimmed→ Ada =~ s/\s+\z//;7my $length→ 3 = length($trimmedAda);89print "raw=[$rawAda   ]\n";10print "trimmed=[$trimmedAda]\n";11print "length=$length3\n";
    outputraw=[Ada   ]
    trimmed=[Ada]
    length=3
  1. $raw ← Bob , $trimmed ← Bob , $length ← 3

    4my $raw→ Bob    = "Bob   ";5my $trimmed→ Bob    = $rawBob   ;6$trimmed→ Bob =~ s/\s+\z//;7my $length→ 3 = length($trimmedBob);89print "raw=[$rawBob   ]\n";10print "trimmed=[$trimmedBob]\n";11print "length=$length3\n";
    outputraw=[Bob   ]
    trimmed=[Bob]
    length=3
  1. $raw ← Perl , $trimmed ← Perl , $length ← 4

    4my $raw→ Perl    = "Perl   ";5my $trimmed→ Perl    = $rawPerl   ;6$trimmed→ Perl =~ s/\s+\z//;7my $length→ 4 = length($trimmedPerl);89print "raw=[$rawPerl   ]\n";10print "trimmed=[$trimmedPerl]\n";11print "length=$length4\n";
    outputraw=[Perl   ]
    trimmed=[Perl]
    length=4

Follow the Trim

  1. $raw starts as Ada with trailing spaces.
  2. The substitution removes the trailing spaces.
  3. $trimmed becomes Ada.
  4. length($trimmed) becomes 3.
  5. The program prints raw=[Ada ], trimmed=[Ada], and length=3. | raw text | trimmed | length | | --- | --- | --- | | Ada | Ada | 3 | | Bob | Bob | 3 | | Perl | Perl | 4 |

Exercise: trim_text.pl

Reproduce trimmed=[Ada] and length=3, then use raw values Bob and Perl to predict each trimmed value and length.