📘 Taking every second element using Perl 6

📘 Taking every second element using Raku

N. B. Perl 6 has been renamed to Raku. Click to read more.


Form a new array by picking every second element from the original array.

There is an array of numbers, and the task is to pick every second element and put them into a new array.

Prepare the test data:

my @data = 20..30;

Here is a possible solution:

my @selected = @data[1, 3 ... *];
say @selected;

This program prints the following values:

[21 23 25 27 29]

We are using a slice to provide the needed indices within the pair of square brackets. To make a slice, just list more than one element inside the brackets, for example:

say @data[2, 3, 5]; # (22 23 25)

To select every second element, a sequence 1, 3...* is created. The ... sequence operator creates a sequence based on the example list provided on its left side. The two numbers, 1 and 3, provide a pattern for the arithmetic progression; thus, every element is calculated as xn = x(n-1) + 2.

The star at the right end of the sequence ensures that the sequence is generated until the whole array has been looked up. Using the * is a very Perl 6-ish way to ask the compiler to do the right job for you (the Do What I Mean, or DWIM, principle).

Leave a Reply