# New Ticket Created by Colin Kuskie # Please include the string: [perl #44553] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=44553 >
This patch adds a new tutorial file, 56_defined.pir, which talks about the concept of definedness.
Index: examples/tutorial/56_defined.pir =================================================================== --- examples/tutorial/56_defined.pir (revision 0) +++ examples/tutorial/56_defined.pir (revision 0) @@ -0,0 +1,77 @@ +=head1 defined + +The defined function tells you if the contents of a PMC register is defined or not. Using +defined on an temporary Integer, Number, or String register will generate an error. + +=cut + +.sub main :main + + $I0 = defined $P0 + if $I0 goto defined_PO + say "$P0 is undefined before being used" + goto end_defined_P0 + defined_PO: + say "$P0 is defined before being used" + +=pod + +PMCs are undefined before being typed. After they are typed, they +are defined, and hold whatever default value PMCs of that type contain. For example, +Integer PMCs, by default, are zero. + +=cut + + end_defined_P0: + $P1 = new String + $I0 = defined $P1 + say $P1 # prints \n + if $I0 goto defined_P1 + say "$P1 is undefined after being typed" + goto end_defined_P1 + defined_P1: + say "$P1 is defined after being typed" + + end_defined_P1: + $P2 = new Integer + $I0 = defined $P2 + say $P2 # prints 0\n + if $I0 goto defined_P2 + say "$P2 is undefined after being typed" + goto end_defined_P2 + defined_P2: + say "$P2 is defined after being typed Integer" + +=pod + +The exception to that is if you use the Undef PMC. After typing the PMC, it will still +be undef. + +=cut + + end_defined_P2: + $P3 = new Undef + $I0 = defined $P3 + if $I0 goto defined_P3 + say "$P3 is undefined after being typed as Undef" + goto end_defined_P3 + defined_P3: + say "$P3 is defined after being typed" + end_defined_P3: + + +=pod + + + +=cut + + +.end + +# Local Variables: +# mode: pir +# fill-column: 100 +# End: +# vim: expandtab shiftwidth=4: +