Replace separator characters before storing a value.

escaping-values Escaping keeps delimiter characters from being confused with structure.

Escaping Values

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

my $style = "equals";
my $value = "a=b";
if ($style eq "semicolon") {
    $value = "a;b";
} elsif ($style eq "plain") {
    $value = "abc";
}

my $escaped = $value;
$escaped =~ s/=/\\=/g;
$escaped =~ s/;/\\;/g;

print "style=$style\n";
print "value=$value\n";
print "escaped=$escaped\n";
use strict;
use warnings;

my $style = "semicolon";
my $value = "a=b";
if ($style eq "semicolon") {
    $value = "a;b";
} elsif ($style eq "plain") {
    $value = "abc";
}

my $escaped = $value;
$escaped =~ s/=/\\=/g;
$escaped =~ s/;/\\;/g;

print "style=$style\n";
print "value=$value\n";
print "escaped=$escaped\n";
use strict;
use warnings;

my $style = "plain";
my $value = "a=b";
if ($style eq "semicolon") {
    $value = "a;b";
} elsif ($style eq "plain") {
    $value = "abc";
}

my $escaped = $value;
$escaped =~ s/=/\\=/g;
$escaped =~ s/;/\\;/g;

print "style=$style\n";
print "value=$value\n";
print "escaped=$escaped\n";
  1. $style ← equals, $value ← a=b, $escaped ← a=b

    4my $style→ equals = "equals"; #@style="semicolon", "plain"5my $value→ a=b = "a=b";6if ($style eq "semicolon") {7    $value = "a;b";8} elsif ($style eq "plain") {9    $value = "abc";10}1112my $escaped→ a=b = $valuea=b;13$escaped→ a\=b =~ s/=/\\=/g;14$escapeda\=b =~ s/;/\\;/g;1516print "style=$styleequals\n";17print "value=$valuea=b\n";18print "escaped=$escapeda\=b\n";
    outputstyle=equals
    value=a=b
    escaped=a\=b
  1. $style ← semicolon, $value ← a=b

    4my $style→ semicolon = "semicolon";5my $value→ a=b = "a=b";6if ($style eq "semicolon") {
  2. $value ← a;b

    5my $value = "a=b";6if ($stylesemicolon eq "semicolon") {7    $value→ a;b = "a;b";8} elsif ($style eq "plain") {
  3. $escaped ← a;b

    12my $escaped→ a;b = $valuea;b;13$escapeda;b =~ s/=/\\=/g;14$escaped→ a\;b =~ s/;/\\;/g;1516print "style=$stylesemicolon\n";17print "value=$valuea;b\n";18print "escaped=$escapeda\;b\n";
    outputstyle=semicolon
    value=a;b
    escaped=a\;b
  1. $style ← plain, $value ← a=b

    4my $style→ plain = "plain";5my $value→ a=b = "a=b";6if ($style eq "semicolon") {
  2. $value ← abc

    7    $value = "a;b";8} elsif ($styleplain eq "plain") {9    $value→ abc = "abc";10}
  3. $escaped ← abc

    12my $escaped→ abc = $valueabc;13$escapedabc =~ s/=/\\=/g;14$escapedabc =~ s/;/\\;/g;1516print "style=$styleplain\n";17print "value=$valueabc\n";18print "escaped=$escapedabc\n";
    outputstyle=plain
    value=abc
    escaped=abc