Change %randomarray = ($key => $_);
to $randomarray{$key} = $_; -David On Wed, 2001-12-19 at 11:05, KEVIN ZEMBOWER wrote: > I need to take a file of alphabetized lines (one line per record) and > randomize it. I thought one way of doing this was to read in the file, > one line at a time, generate a random number and store the line in a > hash with the random number as the key. After all the lines were read > in, I'd output each line, sorted by the key (the random number). I tried > to do this in this program: > www:~ # cat randomize.pl > #! /usr/bin/perl -w > > # www:/root/randomize.pl written by Kevin Zembower on 18-Dec-2001 to > randomize line in a file. > # Usually called by: > # ./randomize.pl <ordered.list >randomized.list > while (<>) { > $key = rand; > # print "$key => $_"; > %randomarray = ($key => $_); > } > foreach $key (keys %randomarray) { > print "$key => $randomarray{$key}"; > } > > www:~ # > > When I run this program, if I uncomment the first print statement, I > can see it reading in the lines of the file, but the foreach loop only > prints the last line. > > What dumb mistake did I make? > > Is there an easier/faster/better way of doing this that a perl guru > would use? > > Thanks so much for your thoughts. I learn lots through this list. > > -Kevin Zembower > > ----- > E. Kevin Zembower > Unix Administrator > Johns Hopkins University/Center for Communications Programs > 111 Market Place, Suite 310 > Baltimore, MD 21202 > 410-659-6139 > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]