Files and Safe IO
Build Output Text
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
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";
$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
$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
$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