Steve Fink wrote:
>
> But then what does my $x = BlueFoo->new(); print
> "$x" do, assuming there is a BlueFoo::STRINGIFY? Print
> "BlueFoo=HASH(0x0b38134)"?

The current thinking it to preserve the default behavior, which would be
to print out the ref info, UNLESS there is a STRING function. That
STRING function would then print out whatever you set it up to print
out. See RFC 49 for more info.

So, if you defined BlueFoo::STRING as follows:

   package BlueFoo;
   sub STRING {
       return "Wazzzzzzaaaaap!!";
   }

Then your code would do this:

   my $x = BlueFoo->new;
   print "$x";            # prints "Wazzzzzzaaaaap!!"

Also, please note the sub is STRING. 10,000 emails went back and forth,
and STRINGIFY is too cute for non-English natives. It also requires we
do NUMMIFY or BOOLIFY instead of NUMBER or BOOLEAN. Too cute. 

See RFC 159 for more details on this.
 
> As for non-vtable methods, were you planning on making
> 
> my Foo $foo; $foo->method_not_in_Foo_package();

The identical Perl 5 behavior and error of:

   Can't locate method method_not_in_Foo_package via package $foo

Should apply here.

-Nate

Reply via email to