RFC 103 (v1) Fix print "$r->func" and $pkg::$var precedence
[email protected] (Perl6 RFC Librarian)
| Newsgroups | perl.perl6.language,perl.perl6.announce |
|---|---|
| Message-ID | <[email protected]> |
This and other RFCs are available on the web at http://dev.perl.org/rfc/ =head1 TITLE Fix print "$r->func" and $pkg::$var precedence =head1 VERSION Maintainer: Nathan Wiger <[email protected]> Date: 14 Aug 2000 Version: 1 Mailing List: [email protected] Number: 103 Status: Developing =head1 ABSTRACT Currently, attempting to use objects in a string context yields garbage: print "r is $r->func"; # "OBJ=HASH(0xef958)->func" print "r is ", $r->func; # works, but clumsy In addition, trying to dynamically assign to unnamed classes is very difficult: $pkg::$var = $val; # error ${"${pkg}::$var"} = $val; # works, but bleeech! The precedence and parsing of these operators should be fixed to allow these important operations. =head1 DESCRIPTION =head2 Printable objects This should print out correctly: $r = new Class; print "$r->func"; This would make it consistent with hashrefs and arrayrefs, which already work correctly in string contexts. Note that both this RFC and RFC 49 propose changes that make an object's debugging info hard to get to. The next version of RFC 49 will include an operator for easily accessing that information. Please see it for details. =head2 Dynamic package names Currently, assigning values to dynamically-created package names is, frankly, and pain in the butt. Major. These should work in Perl 6: $pkg = 'Class'; $var = 'DEBUG'; $pkg::$var = 1; $subpkg = 'Special'; $class = $pkg . '::' . $subpkg; require $class; # require Class::Special Currently, the precedenence of :: vs. symbolic references does not allow these operations. =head1 IMPLEMENTATION I'll leave that to the internals guys. :-) =head1 REFERENCES RFC 49: Objects should have builtin stringifying STRING method Programming Perl, 2ed, for the ${"${pkg}::$var"} syntax