push vs. append on arrays in Perl 6

push treats the supplied parameters as individual entities and pushes them onto the original array without flattening them.

append (introduced new after 2015.09 release) will flatten the supplied array - if there was only one array supplied, but will reat them as individual entities if more than one arrays are supplied.

Note! This site is about Perl 6.
If you are looking for a solution for Perl 5, please check out the Perl 5 tutorial.


use v6;

my @a = ('foo', 'bar');
say @a.perl;       # ["foo", "bar"]

my @b;
@b.push: @a;
say @b.perl;       # [["foo", "bar"],]

my @c;
@c.append: @a;
say @c.perl;       # ["foo", "bar"]

@b.push: @a;
say @b.perl;       #  [["foo", "bar"], ["foo", "bar"]]

@c.append: @a;
say @c.perl;       # ["foo", "bar", "foo", "bar"]

my @x = ('abc', 'def');

my @d;
@d.push: @a, @x;
say @d.perl;       # [["foo", "bar"], ["abc", "def"]]

my @e;
@e.append: @a, @x;
say @e.perl;       # [["foo", "bar"], ["abc", "def"]]

The Perl 6 Tricks and Treats newsletter has been around for a while. If you are interested to get special notification when there is new content on this site, it is the best way to keep track:
Full name:
This is a newsletter temporarily running on my personal site ( using Mailman, till I implement an alternative system in Perl 6.
Gabor Szabo
Written by Gabor Szabo

Published on 2015-10-11


In the comments, please wrap your code snippets within <pre> </pre> tags and use spaces for indentation.
comments powered by Disqus
Suggest a change
Elapsed time: 2.3234197

Support my Perl 6 book!

I am writing a book on Web Application Development in Perl 6 and raising money via crowdfunding. Please support my effort!

Perl 6 Tricks and Treats newsletter

Register to the free newsletter now, and get updates and news.