> Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm > Date: Sat, 18 Jan 2003 15:07:56 -0800 (PST) > From: "Sean O'Rourke" <[EMAIL PROTECTED]> > Cc: Damian Conway <[EMAIL PROTECTED]>, > "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> > X-SMTPD: qpsmtpd/0.20, http://develooper.com/code/qpsmtpd/ > > On Sat, 18 Jan 2003, Michael Lazzaro wrote: > > So 'if' and friends are just (native) subroutines with prototypes like: > > > > sub if (bool $c, Code $if_block) {...}; > > IIRC it's not that pretty, unfortunately, if you want to support this: > > if $test1 { > # blah > } elsunless $test2 { > # ... > }
Ahh, you used the unmentionable _correctly_, unlike so many who misunderstood some six months ago. > since that gets parsed as > > if($test1, { ... }) # aiee: too many arguments to "if" That is not a problem: # We'll just pretend that dereferencing the "undef" sub does nothing sub if ($test, █ &follow) { # ... er, how do you write "if"? Hmm... $test ?? block() :: follow() } sub elsunless ($test, █ &follow) { !$test ?? block() :: follow() } So: if $test1 { # stuff } elsunless $test2 { # stuff 2 } Becomes (semantically): if($test1, { # stuff }, elsunless($test2, { # stuff 2 })); Luke