"A. Pagaltzis" <[EMAIL PROTECTED]> wrote: > sub flatten_copy { > local $_ = shift; > ref $_ eq 'SCALAR' ? "$$_" : "$_"; > } > > my %copy = %$tmpls; > $_ = \( flatten_copy $_ ) for values %copy; > @{$self->{templates}}{ keys %copy } = values %copy;
Excellent! I believe it's better to do ref $_ ? "$$_" : "$_" than ref $_ eq 'SCALAR' ? "$$_" : "$_" because, in the first case, you get an actual error in the exceptional case (a ref of the wrong type), whereas in the latter case you get a useless and wrong string in the value, which you might not catch until later, if ever. If you really want to test the ref type, do so robustly using the methods in Scalar::Util. -- John Douglas Porter __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com