my $var1;
my $var2 = 'val2';
####
#!/usr/bin/env perl -l
use strict;
use warnings;
my $hashref = { a => 1, b => 2 };
my @array = qw{c d e};
use constant {
HR_ARRAY => [ sort values %$hashref ],
AREF => \@array,
};
BEGIN { print join ' ', 'B1:', sort(keys %$hashref), @array }
BEGIN { print join ' ', 'B2:', @{+HR_ARRAY}, @{+AREF} }
INIT { @array = qw{f g h} }
INIT { print join ' ', 'I1:', sort(keys %$hashref), @array }
INIT { @array = qw{i j k} }
INIT { print join ' ', 'I2:', @{+HR_ARRAY}, @{+AREF} }
print join ' ', 'R1:', sort(keys %$hashref), @array;
print join ' ', 'R2:', @{+HR_ARRAY}, @{+AREF};
####
B1:
B2:
I1: f g h
I2: i j k
R1: a b c d e
R2: c d e
####
$ perl -E 'use constant AREF => [1..4]; say "@{+AREF}";'
1 2 3 4
$ perl -E 'use constant AREF => [1..4]; say "@{+AREF}"; AREF = []'
Can't modify constant item in scalar assignment at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
$ perl -E 'use constant AREF => [1..4]; say "@{+AREF}"; AREF->[2] = 99; say "@{+AREF}"'
1 2 3 4
1 2 99 4
####
use constant { ONE => 1, ..., FOUR => 4 };
use constant NUM_AREF => [ ONE .. FOUR ];