リストをランダムに並び替えるPerlスクリプト

を作ると何かリスト(かんたんなクイズなど)を並べ替えて問題集とかが作れるかも、と思って久しぶりにPerlスクリプトを書いてみた。

これで適当に複数のファイルに問題を記述しておいてglobでファイルの一覧を取ってくれば、簡単な問題集ができる。前にも似たようなことをやったような気もするけど。

#!/usr/bin/env perl -w
# test.pl
# -*- Mode: Perl; coding: shift_jis -*-
# for Perl 5 or later only (maybe).
#
#
#
#
use strict;
use warnings 'all';

my $max = 200;
my @array;
my %hash;
my @newarray;

for (0 .. $max) {
    my $string = sprintf("%03d", $_);
    push(@array, $string);
}

for my $element (@array) {
    my $number = rand($max);    # てきとうに数字をとる

    while (defined $hash{$number}) {
        $number = rand($max);
    }
    $hash{$number} = $element;
}

for my $hashkey (sort { $a <=> $b } keys %hash) {
    # printf("%10f -> %03d\n", $hashkey, $hash{$hashkey});
    push(@newarray, $hash{$hashkey});
}
# test.pl ends here.