Use lexical package data to hide a formatting detail.

private-helpers Lexical variables inside a package can keep helper details away from callers.

Private Helpers

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

package TicketLabel;

my $prefix = "ticket";

sub label {
    my ($number) = @_;
    return "$prefix-$number";
}

package main;

my $number = 7;
my $label = TicketLabel::label($number);

print "number=$number\n";
print "label=$label\n";
use strict;
use warnings;

package TicketLabel;

my $prefix = "ticket";

sub label {
    my ($number) = @_;
    return "$prefix-$number";
}

package main;

my $number = 3;
my $label = TicketLabel::label($number);

print "number=$number\n";
print "label=$label\n";
use strict;
use warnings;

package TicketLabel;

my $prefix = "ticket";

sub label {
    my ($number) = @_;
    return "$prefix-$number";
}

package main;

my $number = 12;
my $label = TicketLabel::label($number);

print "number=$number\n";
print "label=$label\n";
  1. $prefix ← ticket, $number ← 7

    6my $prefix→ ticket = "ticket";78sub label {9    my ($number) = @_;10    return "$prefix-$number";11}1213package main;1415my $number→ 7 = 7; #@number=3, 1216my $label = TicketLabel::label($number7);
  2. $number ← 7

    8sub label {9    my ($number→ 7) = @_;10    return "$prefixticket-$number7";11}
  3. $label ← ticket-7

    15my $number = 7; #@number=3, 1216my $label→ ticket-7 = TicketLabel::label($number7);1718print "number=$number7\n";19print "label=$labelticket-7\n";
    outputnumber=7
    label=ticket-7
  1. $prefix ← ticket, $number ← 3

    6my $prefix→ ticket = "ticket";78sub label {9    my ($number) = @_;10    return "$prefix-$number";11}1213package main;1415my $number→ 3 = 3;16my $label = TicketLabel::label($number3);
  2. $number ← 3

    8sub label {9    my ($number→ 3) = @_;10    return "$prefixticket-$number3";11}
  3. $label ← ticket-3

    15my $number = 3;16my $label→ ticket-3 = TicketLabel::label($number3);1718print "number=$number3\n";19print "label=$labelticket-3\n";
    outputnumber=3
    label=ticket-3
  1. $prefix ← ticket, $number ← 12

    6my $prefix→ ticket = "ticket";78sub label {9    my ($number) = @_;10    return "$prefix-$number";11}1213package main;1415my $number→ 12 = 12;16my $label = TicketLabel::label($number12);
  2. $number ← 12

    8sub label {9    my ($number→ 12) = @_;10    return "$prefixticket-$number12";11}
  3. $label ← ticket-12

    15my $number = 12;16my $label→ ticket-12 = TicketLabel::label($number12);1718print "number=$number12\n";19print "label=$labelticket-12\n";
    outputnumber=12
    label=ticket-12