Scalar and Text Basics
Trim Text
A regular expression substitution can clean predictable whitespace from a scalar.
substitution
A substitution rewrites the matching part of a string.
Trim Text
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";
$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
$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
$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
$rawstarts asAdawith trailing spaces.- The substitution removes the trailing spaces.
$trimmedbecomesAda.length($trimmed)becomes3.- The program prints
raw=[Ada ],trimmed=[Ada], andlength=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.