"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