Doesn't matter whether your explanation is precise. If one uses warnings (like everyone says here), there are plenty of warnings to make one think whether things are right:
use Data::Dumper;
use strict;
use warnings;
my @array = qw( A B C );
my ($x, $y, $z) = (0, 1, 2);
my @a = $array[0..1];
print Dumper(\@a);
@a = $array[$x..$y];
print Dumper(\@a);
Which gives:
Use of uninitialized value in range (or flip) at math1.pl line 8.
Use of uninitialized value in range (or flop) at math1.pl line 8.
$VAR1 = [
'B'
];
Argument "" isn't numeric in array element at math1.pl line 10.
$VAR1 = [
'A'
];
With all the warnings, one starts to fix things:
use Data::Dumper;
use strict;
use warnings;
my @array = qw( A B C );
my ($x, $y, $z) = (0, 1, 2);
my @a = @array[0..1];
print Dumper(\@a);
@a = @array[$x..$y];
print Dumper(\@a);
Which gives the slice one wanted:
$VAR1 = [
'A',
'B'
];
$VAR1 = [
'A',
'B'
];