Workflow and Source Panels
Callback Step Panel
Trace named Perl subroutine steps as one ordered replay panel.
callback step
Named subroutines keep each transformation visible in replay while Perl stays in a single execution thread.
Callback Step Panel
callback_step_panel.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
sub add_step {
my ($value) = @_;
return $value + 4;
}
sub double_step {
my ($value) = @_;
return $value * 2;
}
my $base = 6;
my $first = add_step($base);
my $second = double_step($first);
print "base=$base\n";
print "first=$first\n";
print "second=$second\n";
use strict;
use warnings;
sub add_step {
my ($value) = @_;
return $value + 4;
}
sub double_step {
my ($value) = @_;
return $value * 2;
}
my $base = 3;
my $first = add_step($base);
my $second = double_step($first);
print "base=$base\n";
print "first=$first\n";
print "second=$second\n";
use strict;
use warnings;
sub add_step {
my ($value) = @_;
return $value + 4;
}
sub double_step {
my ($value) = @_;
return $value * 2;
}
my $base = 9;
my $first = add_step($base);
my $second = double_step($first);
print "base=$base\n";
print "first=$first\n";
print "second=$second\n";
$base ← 6
14my $base→ 6 = 6; #@base=3, 915my $first = add_step($base6);16my $second = double_step($first);$value ← 6
4sub add_step {5 my ($value→ 6) = @_;6 return $value6 + 4;7}$first ← 10
14my $base = 6; #@base=3, 915my $first→ 10 = add_step($base6);16my $second = double_step($first10);$value ← 10
9sub double_step {10 my ($value→ 10) = @_;11 return $value10 * 2;12}$second ← 20
15my $first = add_step($base);16my $second→ 20 = double_step($first10);1718print "base=$base6\n";19print "first=$first10\n";20print "second=$second20\n";outputbase=6 first=10 second=20
$base ← 3
14my $base→ 3 = 3;15my $first = add_step($base3);16my $second = double_step($first);$value ← 3
4sub add_step {5 my ($value→ 3) = @_;6 return $value3 + 4;7}$first ← 7
14my $base = 3;15my $first→ 7 = add_step($base3);16my $second = double_step($first7);$value ← 7
9sub double_step {10 my ($value→ 7) = @_;11 return $value7 * 2;12}$second ← 14
15my $first = add_step($base);16my $second→ 14 = double_step($first7);1718print "base=$base3\n";19print "first=$first7\n";20print "second=$second14\n";outputbase=3 first=7 second=14
$base ← 9
14my $base→ 9 = 9;15my $first = add_step($base9);16my $second = double_step($first);$value ← 9
4sub add_step {5 my ($value→ 9) = @_;6 return $value9 + 4;7}$first ← 13
14my $base = 9;15my $first→ 13 = add_step($base9);16my $second = double_step($first13);$value ← 13
9sub double_step {10 my ($value→ 13) = @_;11 return $value13 * 2;12}$second ← 26
15my $first = add_step($base);16my $second→ 26 = double_step($first13);1718print "base=$base9\n";19print "first=$first13\n";20print "second=$second26\n";outputbase=9 first=13 second=26