Tooling can turn behavior on or off with named feature flags.

feature flag A feature flag is a named setting that enables or disables behavior.

Feature Flags

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

my $feature = "docs";
my %enabled = (
    docs => 1,
    tests => 1,
);
my $is_enabled = $enabled{$feature} ? 1 : 0;
my $status = $is_enabled ? "enabled" : "disabled";

print "feature=$feature\n";
print "status=$status\n";
use strict;
use warnings;

my $feature = "tests";
my %enabled = (
    docs => 1,
    tests => 1,
);
my $is_enabled = $enabled{$feature} ? 1 : 0;
my $status = $is_enabled ? "enabled" : "disabled";

print "feature=$feature\n";
print "status=$status\n";
use strict;
use warnings;

my $feature = "bench";
my %enabled = (
    docs => 1,
    tests => 1,
);
my $is_enabled = $enabled{$feature} ? 1 : 0;
my $status = $is_enabled ? "enabled" : "disabled";

print "feature=$feature\n";
print "status=$status\n";
  1. $feature ← docs, %enabled ← 2, $is_enabled ← 1, $status ← enabled

    4my $feature→ docs = "docs"; #@feature="tests", "bench"5my %enabled→ 2 = (6    docs => 1,7    tests => 1,8);9my $is_enabled→ 1 = $enabled{$feature}1 ? 1 : 0;10my $status→ enabled = $is_enabled1 ? "enabled" : "disabled";1112print "feature=$featuredocs\n";13print "status=$statusenabled\n";
    outputfeature=docs
    status=enabled
  1. $feature ← tests, %enabled ← 2, $is_enabled ← 1, $status ← enabled

    4my $feature→ tests = "tests";5my %enabled→ 2 = (6    docs => 1,7    tests => 1,8);9my $is_enabled→ 1 = $enabled{$feature}1 ? 1 : 0;10my $status→ enabled = $is_enabled1 ? "enabled" : "disabled";1112print "feature=$featuretests\n";13print "status=$statusenabled\n";
    outputfeature=tests
    status=enabled
  1. $feature ← bench, %enabled ← 2, $is_enabled ← 0, $status ← disabled

    4my $feature→ bench = "bench";5my %enabled→ 2 = (6    docs => 1,7    tests => 1,8);9my $is_enabled→ 0 = $enabled{$feature}(empty) ? 1 : 0;10my $status→ disabled = $is_enabled0 ? "enabled" : "disabled";1112print "feature=$featurebench\n";13print "status=$statusdisabled\n";
    outputfeature=bench
    status=disabled