You should use 'normal' brackets () for a function call: close{GENERAL_LOG};. Since you're using {}, it thinks it's a variable and says there is no such reference ("Not a GLOB reference at"). So, you made a typo ;-)
PodMaster has just told me that perl doesn't think it's a variable. Perl actually "creates an anonymous hash, and passes it's reference to the close function. perl -MData::Dumper -e die(Dumper{1..10})".