diff --git a/.mailmap b/.mailmap index 0af00f53f0..d74f50d4c0 100644 --- a/.mailmap +++ b/.mailmap @@ -435,6 +435,7 @@ Jody Belka knew-p5p@pimb.org Joe Buehler Joe McMahon Joe McMahon Joe McMahon +Joe McMahon Joe McMahon John Heidemann johnh@isi.edu John Hughes John Hughes John L. Allen John L. Allen diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 3b6312d330..8ad7d97961 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -931,24 +931,63 @@ X =for Pod::Functions create an object -This function tells the thingy referenced by REF that it is now an object -in the CLASSNAME package. If CLASSNAME is an empty string, it is -interpreted as referring to the C
package. -If CLASSNAME is omitted, the current package -is used. Because a L|/bless REF,CLASSNAME> is often the last -thing in a constructor, it returns the reference for convenience. -Always use the two-argument version if a derived class might inherit the -method doing the blessing. See L for more about the blessing -(and blessings) of objects. +C tells Perl to mark the item referred to by C as an +object in a package. The two-argument version of C is +always preferable unless there is a specific reason to I +use it. -Consider always blessing objects in CLASSNAMEs that are mixed case. -Namespaces with all lowercase names are considered reserved for -Perl pragmas. Builtin types have all uppercase names. To prevent -confusion, you may wish to avoid such package names as well. -It is advised to avoid the class name C<0>, because much code erroneously -uses the result of L|/ref EXPR> as a truth value. +=over -See L. +=item * Bless the referred-to item into a specific package +(recommended form): + + bless $ref, $package; + +The two-argument form adds the object to the package specified +as the second argument. + +=item * Bless the referred-to item into package C
: + + bless $ref, ""; + +If the second argument is an empty string, C adds the +object to package C
. + +=item * Bless the referred-to item into the current package (not +inheritable): + + bless $ref; + +If C is used without its second argument, the object is +created in the current package. The second argument should +always be supplied if a derived class might inherit a method +executing C. Because it is a potential source of bugs, +one-argument C is discouraged. + +=back + +See L for more about the blessing (and blessings) of +objects. + +L|/bless REF,CLASSNAME> returns its first argument, the +supplied reference, as the value of the function; since C +is commonly the last thing executed in constructors, this means +that the the reference to the object is returned as the +constructor's value and allows the caller to immediately use +this returned object in method calls. + +C should always be a mixed-case name, as +all-uppercase and all-lowercase names are meant to be used only +for Perl builtin types and pragmas, respectively. Avoid creating +all-uppercase or all-lowercase package names to prevent +confusion. + +Also avoid ing things into the class name C<0>; this +will cause code which (erroneously) checks the result of +L|/ref EXPR> to see if a reference is Ced to fail, +as "0", a falsy value, is returned. + +See L for more details. =item break