''[[FrontPage]]''
* 配列要素のシャッフル [#q9cfd11c]
一般的なList::Utilモジュールを利用する方法です。~
** 関連ページ [#i038442d]
-[[Perl・CGI入門/パッケージを使う/ID Roll]]
ファイル名: shuffle.pl
#!/usr/local/bin/perl -w
# 実行コマンド perl shuffle.pl
use strict; # ソースを厳密にチェック #
use warnings; # 警告を出す #
use List::Util; # リストに関するモジュール #
# #
my @races = ( 'Human', 'Amberite', 'Vampire', 'Half-Titan', # 種族リスト #
'Hobbit', 'Elf', 'Half-Elf', 'Dwarf','Gnome', 'Yeek', # #
'Dark-Elf', 'Zombie', 'Draconian', 'Mindflayer', 'Imp', # #
'Beastman', 'Half-Orc', 'Half-Troll', 'High Elf','Android', # #
'Half-Ogre', 'Cyclops', 'Klackon', 'Kobold', 'Nibelung', # #
'Golem', 'Skeleton', 'Spectre', 'Sprite', 'Half-Giant', # #
'Ent', 'Death Mold' ); # #
# #
my @classes = ( 'Warrier', 'Ranger', 'Warrier-Mage', 'Paladin', # 職業リスト #
'Blue Mage', 'Mindcrafter', 'Chaoss-Warrier', 'Mage', # #
'Priest', 'Monk', 'High Mage', 'Alchemist', 'Archer', # #
'Samurai', 'Axemaster', 'Bard', 'Demonologist', 'Druid', # #
'Geomancer', 'Haftedmaster', 'Loremaster', 'Mimic', # #
'Ninja', 'Tourist', 'Polearmmaster', 'Runecrafter', # #
'Sorceror', 'Summoner', 'Swordmaster', 'Symbiant', # #
'Thaumaturgist', 'Red Mage' ); # #
# #
my $m = 0; # 種族カウント用 #
my $n = 0; # 職業カウント用 #
my @mssids; # 作業用 #
# #
# シャッフル対象の配列を用意する #
while( $m < 32 ) # ループ: 種族数 == 32 回分 #
{ # #
while( $n < 32 ) # ループ: 職業数 == 32 回分 #
{ # #
unshift( @mssids, ("$races[$m] $classes[$n],") ); # 配列の先頭に要素追加(push関数でもよい) #
$n++; # 職業カウントアップ #
} # #
# #
$n -= 32; # 職業カウントリセット #
$m++; # 種族カウントアップ #
} # #
# #
@mssids = List::Util::shuffle( @mssids ); # 配列要素のシャッフル #
# #
open (DECK, ">./deck_o.txt"); # 書き込みでファイルを開く #
flock (DECK, 2); # 排他ロック(LOCK_EX == 2) #
print (DECK @mssids); # ファイルにシャッフル結果を書き込む #
close DECK; # ファイルクローズ #
参考までに(ファイル名: deck_o.txt)
Golem Archer,Half-Elf Polearmmaster,Half-Giant Druid,Dwarf Polearmmaster,Dwarf Monk,Half-Orc Haftedmaster,...,以下改行なしで続く
*** 参考ページ [#f3ec55a8]
http://www.kt.rim.or.jp/~kbk/perl-5.8/list-util.html~