I recommend you read Flipin good, or a total flop? :). The short version is that you are geting the scalar range operator (scalar context) rather than the list you expected for a slice. The immediate fix is:
use strict;
use warnings;
my @unique_vault_list = (1..32);
my @tapes_for_box1 = @unique_vault_list[0..19];
my @tapes_for_box2 = @unique_vault_list[20..$#unique_vault_list];
print "Box 1: @tapes_for_box1\n";
print "Box 2: @tapes_for_box2\n";
Prints:
Box 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Box 2: 21 22 23 24 25 26 27 28 29 30 31 32
An alternative if you don't mind clobbering your original list (or making a copy of it) is:
use strict;
use warnings;
my @unique_vault_list = (1..32);
my @tapes_for_box1 = splice @unique_vault_list, 0, 20;
my @tapes_for_box2 = splice @unique_vault_list, 0, 20;
print "Box 1: @tapes_for_box1\n";
print "Box 2: @tapes_for_box2\n";
Prints:
Box 1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Box 2: 21 22 23 24 25 26 27 28 29 30 31 32
DWIM is Perl's answer to Gödel
|