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 ];