Eric is correct, the FAQ is wrong. The simplest patch is probably:
--- perlfaq7.pod 31 Jan 2003 17:38:14 -0000 1.14 +++ perlfaq7.pod 20 Jul 2003 06:09:30 -0000 @@ -809,5 +809,5 @@ use your own hash or a real reference instead. - $fred = 23; + $USER_VARS{"fred"} = 23; $varname = "fred"; $USER_VARS{$varname}++; # not $$varname++ === Forwarded Message: Date: Fri, 11 Jul 2003 09:40:56 -0500 From: Eric Pement <[EMAIL PROTECTED]> Subject: Error in Sect. 7 on using a variable as a variable name To: [EMAIL PROTECTED] To whom it may concern: In trying to learn about references, I believe I've found an error in the Perl FAQ, section 7 ("General Perl Language Issues"), under the question, "How can I use a variable as a variable name?" The problem exists in the documentation for Perl 5.6 and Perl 5.8. I tried emailing this message to "[EMAIL PROTECTED]" and got no response. Now that I've got a newer email address, perhaps I can get a reply. The FAQ currently reads in part: By using symbolic references, you are just using the package's symbol-table hash (like %main::) instead of a user-defined hash. The solution is to use your own hash or a real reference instead. $fred = 23; $varname = "fred"; $USER_VARS{$varname}++; # not $$varname++ This solution does not work and does not provide "24" as the FAQ authors seem to have intended. This can be demonstrated like so: #!/usr/bin/perl use strict; my ($fred, $varname, %USER_VARS); $fred = 23; $varname = "fred"; $USER_VARS{$varname}++; print "Value is: $USER_VARS{$varname}\n"; The output is "Value is: 1". So how should this be corrected? Here's a replacement I suggest for the FAQ. It returns "24", as expected: $USER_VARS{fred} = 23; $varname = "fred"; $USER_VARS{$varname}++; # not $$varname++ Finally, the FAQ says another solution is to use a real reference instead. Perhaps you could tell new perl users how this is done: $fred = 23; $varname = \$fred; $$varname++; Thanks in advance for your time. -- Eric Pement - [EMAIL PROTECTED] Education Technical Services, MBI === End of Forwarded Message