Scalar and Text Basics
Concatenation
The dot operator joins strings without changing the original scalar values.
concatenation
Concatenation builds a new string by placing one string after another.
Concatenation
concatenation.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $suffix = "log";
my $base = "report";
my $filename = $base . "." . $suffix;
my $label = "file:" . $filename;
print "suffix=$suffix\n";
print "filename=$filename\n";
print "label=$label\n";
use strict;
use warnings;
my $suffix = "txt";
my $base = "report";
my $filename = $base . "." . $suffix;
my $label = "file:" . $filename;
print "suffix=$suffix\n";
print "filename=$filename\n";
print "label=$label\n";
use strict;
use warnings;
my $suffix = "csv";
my $base = "report";
my $filename = $base . "." . $suffix;
my $label = "file:" . $filename;
print "suffix=$suffix\n";
print "filename=$filename\n";
print "label=$label\n";
$suffix ← log, $base ← report, $filename ← report.log, $label ← file:report.log
4my $suffix→ log = "log"; #@suffix="txt", "csv"5my $base→ report = "report";6my $filename→ report.log = $basereport . "." . $suffixlog;7my $label→ file:report.log = "file:" . $filenamereport.log;89print "suffix=$suffixlog\n";10print "filename=$filenamereport.log\n";11print "label=$labelfile:report.log\n";outputsuffix=log filename=report.log label=file:report.log
$suffix ← txt, $base ← report, $filename ← report.txt, $label ← file:report.txt
4my $suffix→ txt = "txt";5my $base→ report = "report";6my $filename→ report.txt = $basereport . "." . $suffixtxt;7my $label→ file:report.txt = "file:" . $filenamereport.txt;89print "suffix=$suffixtxt\n";10print "filename=$filenamereport.txt\n";11print "label=$labelfile:report.txt\n";outputsuffix=txt filename=report.txt label=file:report.txt
$suffix ← csv, $base ← report, $filename ← report.csv, $label ← file:report.csv
4my $suffix→ csv = "csv";5my $base→ report = "report";6my $filename→ report.csv = $basereport . "." . $suffixcsv;7my $label→ file:report.csv = "file:" . $filenamereport.csv;89print "suffix=$suffixcsv\n";10print "filename=$filenamereport.csv\n";11print "label=$labelfile:report.csv\n";outputsuffix=csv filename=report.csv label=file:report.csv
Follow the Text
$suffixstarts aslog.$baseisreport.$filenamebecomesreport.log.$labelbecomesfile:report.log.- The program prints
suffix=log,filename=report.log, andlabel=file:report.log. | suffix | filename | label | | --- | --- | --- | | log | report.log | file:report.log | | txt | report.txt | file:report.txt | | csv | report.csv | file:report.csv |
Exercise: concatenation.pl
Reproduce label=file:report.log, then use suffixes txt and csv to predict each filename and label.