Before writing data, a program can build the exact output text it intends to store.

output buffer An output buffer is a string that collects text before it is written somewhere.

Build Output Text

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

my $word = "safe";
my $buffer = "";

$buffer = $buffer . "status=$word\n";
chomp $buffer;

print "word=$word\n";
print "buffer=$buffer\n";
use strict;
use warnings;

my $word = "fast";
my $buffer = "";

$buffer = $buffer . "status=$word\n";
chomp $buffer;

print "word=$word\n";
print "buffer=$buffer\n";
use strict;
use warnings;

my $word = "clear";
my $buffer = "";

$buffer = $buffer . "status=$word\n";
chomp $buffer;

print "word=$word\n";
print "buffer=$buffer\n";
  1. $word ← safe, $buffer ← (empty)

    4my $word→ safe = "safe"; #@word="fast", "clear"5my $buffer→ (empty) = "";67$buffer→ status=safe
     = $buffer . "status=$wordsafe\n";8chomp $buffer→ status=safe;910print "word=$wordsafe\n";11print "buffer=$bufferstatus=safe\n";
    outputword=safe
    buffer=status=safe
  1. $word ← fast, $buffer ← (empty)

    4my $word→ fast = "fast";5my $buffer→ (empty) = "";67$buffer→ status=fast
     = $buffer . "status=$wordfast\n";8chomp $buffer→ status=fast;910print "word=$wordfast\n";11print "buffer=$bufferstatus=fast\n";
    outputword=fast
    buffer=status=fast
  1. $word ← clear, $buffer ← (empty)

    4my $word→ clear = "clear";5my $buffer→ (empty) = "";67$buffer→ status=clear
     = $buffer . "status=$wordclear\n";8chomp $buffer→ status=clear;910print "word=$wordclear\n";11print "buffer=$bufferstatus=clear\n";
    outputword=clear
    buffer=status=clear