[sf-perl] randomize particular lines
Fred Moyer
fred at redhotpenguin.com
Mon Mar 6 20:03:48 PST 2006
Quinn Weaver wrote:
> On Mon, Mar 06, 2006 at 04:05:47PM -0800, Bart Alberti wrote:
> $word = $words[rand @words]; ## rand returns fractional numbers.
> ## Unfortunately Perl uses floating-point
> ## numbers by default, so it allows
> ## fractional array subscripts. However,
> ## you can't reliably take the 1.23'th element
> ## of an array. This expression will
> ## sometimes get you undef, which is
> ## probably not what you want.
I had to get a random index from a set last week in several places in my
code. I was using '$word = $words[int(rand(@words))]' (wrapped in a
subroutine call), but it's a fairly noisy idiom and I ended up using
'$word = $words[rand(@words)]' as it's a bit easier on the eyes.
Quinn can you explain a bit more how this expression can return undef?
I'm using it with a defined @words list and haven't run into any
problems yet.
More information about the SanFrancisco-pm
mailing list