Safe IO code should handle the path where input is not available.

error path An error path records what happened when the normal path cannot continue.

Open Error Path

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

my $available = 1;
my $content = "ready\n";
my $message;

if ($available) {
    $message = $content;
    chomp $message;
} else {
    $message = "not available";
}

print "available=$available\n";
print "message=$message\n";
use strict;
use warnings;

my $available = 0;
my $content = "ready\n";
my $message;

if ($available) {
    $message = $content;
    chomp $message;
} else {
    $message = "not available";
}

print "available=$available\n";
print "message=$message\n";
  1. $available ← 1, $content ← ready , $message ← (empty)

    4my $available→ 1 = 1; #@available=05my $content→ ready
     = "ready\n";6my $message→ (empty);
  2. $message ← ready

    8if ($available1) {9    $message→ ready
     = $contentready
    ;10    chomp $message→ ready;11} else {
  3. print "available=$available ";

    15print "available=$available1\n";16print "message=$messageready\n";
    outputavailable=1
    message=ready
  1. $available ← 0, $content ← ready , $message ← (empty)

    4my $available→ 0 = 0;5my $content→ ready
     = "ready\n";6my $message→ (empty);
  2. $message ← not available

    10    chomp $message;11} else {12    $message→ not available = "not available";13}
  3. print "available=$available ";

    15print "available=$available0\n";16print "message=$messagenot available\n";
    outputavailable=0
    message=not available