use strict; use warnings; use List::Util qw( shuffle ); my @cards; for my $suit (qw(_clb _dmd _hrt _spd)) { for my $rank (2 .. 10, qw(j q k a)) { push @cards, $rank . $suit; } } my @deck = shuffle @cards; for (1 .. 10) { print(shift(@deck), "\n"); }