On 10/5/05, Ovid <[EMAIL PROTECTED]> wrote:
>   sub _attributes {
>     my ($self, $attrs) = @_;
>     return $$attrs if UNIVERSAL::isa( $attrs, 'SCALAR' );
>
>     my @attributes = UNIVERSAL::isa( $attrs, 'HASH' )
>       ? %$attrs : @$attrs;
>     return unless @attributes;
>     # more code here
>   }
>
> This was a private method, but $attrs is an argument that is passed in
> by the person using my class.  It would be nice if I could just assign
> an "attributes" role to the SCALAR, ARRAY, and HASH classes and say
> that only my class could see the method(s) it provides.  Thus, my
> caller would be blissfully unaware that I am doing this:
>
>   $attrs->attributes; # even if it's an array reference

    sub _attributes($ref) {
        my multi attributes ($scalar) { $$scalar }
        my multi attributes (@array) { @array }
        my multi attributes (%hash) { %hash }
        attributes($ref)
    }

That attributes look suspiciously indentityish.  There is some context
magic going on.

Or doesn't this solve your problem?

Luke

Reply via email to