Perl array splicing syntax -
why third print fail? my @a = (0,1,2,3); print @a[-@a..-2]; # works print @a[0..2]; # works print @a[0..-2]; # prints nothing it's not clear me meaning of -@a used in @a[-@a..-2] statement. special syntax? special syntax provide (if @ all) in addition $#a instance? sort of sugar (which curious shorter single character) symbol array used in subindex means "length of array"? the 3rd print prints nothing because, according perldoc perlop : if left value greater right value returns empty list. see perldoc b::deparse : $ perl -mo=deparse code.pl my(@a) = (0, 1, 2, 3); print @a[-@a .. -2]; print @a[0..2]; print @a[()]; i believe print @a[-@a..-2]; "works" because @a[-4 .. -2] . according perldoc perldata : a negative subscript retrieves value end. so, 3 @ index -1, 2 @ index -2, 1 @ index -3 , 0 @ index -4.