perl -ne "@_=split/,/;$a=@_>2?@_-3:0;print join',',@_[$a..$#_]" #### perl -ne '@_=split/,/;$a=@_>2?@_-3:0;print join",",@_[$a..$#_]' #### for ("1,2,3,4,5,6","1,2,3","1,2","1","") { print "\nTesting: $_\n"; @a=split/,/; eval { my $i; print "grep :",join(',',grep{$_ if $i++<3}reverse split/,/),"\n"; }; print $@ if $@; eval { print "slice1:",join(',',+( split /,/ )[ -3 .. -1 ]),"\n"; }; print $@ if $@; eval { print "-index:$a[-3], $a[-2], $a[-1]\n"; }; print $@ if $@; eval { print "slice2:",join(',',@a[$#a-2..$#a]),"\n"; }; print $@ if $@; eval { $a=@a>2?@a-3:0; print "right :", join(',',@a[$a..$#a]),"\n"; }; print $@ if $@; eval { print "splice:",join(',',splice(@a, $#a - 2, 3)),"\n"; }; print $@ if $@; } __END__ Testing: 1,2,3,4,5,6 grep :6,5,4 slice1:4,5,6 -index:4, 5, 6 slice2:4,5,6 right :4,5,6 splice:4,5,6 Testing: 1,2,3 grep :3,2,1 slice1:1,2,3 -index:1, 2, 3 slice2:1,2,3 right :1,2,3 splice:1,2,3 Testing: 1,2 grep :2,1 slice1:,1,2 -index:, 1, 2 slice2:2,1,2 right :1,2 splice:2 Testing: 1 grep :1 slice1:,,1 -index:, , 1 slice2:,1,1 right :1 Modification of non-creatable array value attempted, subscript -2 at C:\Temp\mistakes.pl line 9. Testing: grep : slice1: -index:, , slice2:,, right : Modification of non-creatable array value attempted, subscript -3 at C:\Temp\mistakes.pl line 9.