On 09/12/13 11:23, Kieren Diment wrote:
In a short subroutine, this:

     use List::Util qw/shuffle/;
     my @list = @{$self->answer_list_orig_order};
     @list = shuffle @list if $self->random_order;
     return \@list;

does what's expected.  Returns the shuffled list.

This:

use List::Util qw/shuffle/;
my @list = @{$self->answer_list_orig_order};
@list = shuffle @list if $self->random_order;
return \@list

returns the list unshuffled.

What's up with that?

So the difference is just the semicolon at the end? Works for me either way.

$ perl -Mstrict -wE 'sub foo { my $self = shift; use List::Util qw/shuffle/;
my @list = @{$self->answer_list_orig_order};
@list = shuffle @list if $self->random_order;
return \@list;} sub answer_list_orig_order { [1 .. 10] } sub random_order { 1 } say for @{ main->foo }
'
5
10
4
2
9
3
7
1
8
6

$ perl -Mstrict -wE 'sub foo { my $self = shift; use List::Util qw/shuffle/;
my @list = @{$self->answer_list_orig_order};
@list = shuffle @list if $self->random_order;
return \@list} sub answer_list_orig_order { [1 .. 10] } sub random_order { 1 } say for @{ main->foo }
'
2
6
9
10
5
4
3
8
7
1

Matt

Reply via email to