One nice way to learn about hashes, arrays, scalars and references, is to learn the perl debugger and just experiment.
There is a perl debugger tutorial in the perl documentation. You can print out the arrays and hashes w/o putting print statements into your code, and that makes the experimentation very easy and interesting. Mark >> -----Original Message----- >> From: Greenhalgh David [mailto:[EMAIL PROTECTED] >> Sent: Thursday, June 05, 2003 1:16 PM >> To: [EMAIL PROTECTED] >> Subject: Getting my head round hashes >> >> Hi all, >> >> I have a script which mostly works, but when I get to the part with >> hashes, it stops. I'm obviously doing something very basically wrong, >> but I can't see what. (been staring at so long it could be anything.) A >> segment of the code is below: >> >> #!/usr/local/perl -wT >> use strict; >> use CGI; >> >> # Do some stuff to identify the value of $marker which will be a number >> >> # Do MySQL query to grab the data to be manipulated >> >> my $dbh=connect(DBI:mysql:database, "user", "password"); >> my $query=("SELECT task_ID, priority FROM task_list WHERE priority >> >$marker"); >> my $reponse->prepare($query); >> $response->execute; >> >> # $ response should now contain a >> # reference to a hash filled with task_ID, priority pairs >> # Dereference $response >> >> my %hash=%($response); >> $response->finish; >> >> # Subtract 1 from each value in the hash >> my ($key, $priority, %newhash); >> >> foreach $key (keys(%hash)){ >> my $priority=$hash{$key}--; >> %newhash=($key, $priority); >> } >> >> # Put the new $priority values into the MySQL table >> >> $query=("UPDATE task_list SET priority=? WHERE task_ID=?"); >> $response->prepare($query); >> >> foreach $key (keys{%newhash}){ >> $priority=$newhash{$key}; >> $response->execute($priority, $key); >> } >> >> $response->finish; >> >> # Test the result >> >> print "Content-Type: text/html\n\n"; >> >> $query=("SELECT" task_ID, priority FROM task_list"); >> $response->prepare($query); >> $response->execute; >> >> while($key, $priority){ >> print "Priority: $priority Task Ident: $key<br>\n\n"; >> } >> >> >> Would someone be patient enough to point out the mistake? >> >> Thanks >> >> Dave >> >> >> -- >> 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]