in reply to rand + shift || pop
A way-
my @list = ( "a" .. "z" ); while ( @list ) { print splice(@list,rand(@list),1), $/; } [download]