use strict; use List::Util 'shuffle'; my @lines = <>; print shuffle( @lines );
# fisher_yates_shuffle( \@array ) : generate a random permutation
# of @array in place
sub fisher_yates_shuffle {
my $array = shift;
my $i;
for ($i = @$array; --$i; ) {
my $j = int rand ($i+1);
next if $i == $j;
@$array[$i,$j] = @$array[$j,$i];
}
}
#!/usr/bin/perl use strict; use warnings; use List::Util 'shuffle'; my @results = (<>); print shuffle(@results);
#!/usr/bin/perl
use strict;
use warnings;
my $status = "hello";
print "$status\n";
happy(\$status);
print "$status\n";
tired($status);
print "$status\n";
sub happy {
my ($s_ref) = @_;
$$s_ref = "lucky";
}
sub tired {
$_[0] = "goodbye";
}
@_ の各要素が元の引数のエイリアスであることは忘れられがちである。「Perl ベストプラクティス」では「常に、まず @_ を展開する」と
つまり、$_[0] を変更すれば、その変数を包含している変数を変更するこ
とになる。