# New Ticket Created by  Ovid 
# Please include the string:  [perl #61772]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=61772 >


    sub array_normal (@array) {
        say sprintf "Array has %d elements and the first value is '%s'",
            @array.elems, @array[0];
        return @array;
    }

    sub array_normal_copy (@array) {
        say sprintf "Array has %d elements and the first value is '%s'",
            @array.elems, @array[0];
        return @array;
    }

    sub array_slurpy (*...@array) {
        say sprintf "Array has %d elements and the first value is '%s'",
            @array.elems, @array[0];
        return @array;
    }

    sub array_slurpy_copy (*...@array is copy) {
        say sprintf "Array has %d elements and the first value is '%s'",
            @array.elems, @array[0];
        return @array;
    }

    my @array = <a b c>;

    my @new_array = array_normal(@array);
    say @new_array[0];

    @new_array = array_normal_copy(@array);
    say @new_array[0];

    @new_array = array_slurpy(@array);
    say @new_array[0];

    @new_array = array_slurpy_copy(@array);
    say @new_array[0];

This outputs the following:

    Array has 3 elements and the first value is 'a'
    a
    Array has 3 elements and the first value is 'a'
    a
    Array has 3 elements and the first value is 'a'
    a
    Array has 3 elements and the first value is 'a'
    a b c

So the "*...@array is copy" behaves like the rest when in the sub, but when 
returned, returns a single item.

Cheers.
Ovid

 --
Buy the book         - http://www.oreilly.com/catalog/perlhks/
Tech blog            - http://use.perl.org/~Ovid/journal/
Twitter              - http://twitter.com/OvidPerl
Official Perl 6 Wiki - http://www.perlfoundation.org/perl6

Reply via email to