I haven't read it all yet, but this looks interesting.
It's public draft of a book on XP in Perl written by Robert Nagler.
Re:Cool but...
runrig on 2004-04-14T16:26:52
Each has it's use in it's place. Use "?:" when you need to return a value in a statement inline. E.g., All of the examples of "?my $x = $test ? $y : $z;
# is better (disclaimer - IMHO) than:
my $x;
if ($test) {
$x = $y;
} else {
$x = $z;
}:" in that document (that I can see) are similar to this, so they're ok. Using "? :" in a void context is arguably not so good. Re:Cool but...
zatoichi on 2004-04-14T16:57:37
my $x = $test ? $y : $z;I can understand doing the above becuase visually you can isolate that line and grok it quickly. When you use it in a larger "else if" context you loose that visual recognition.
whitespace
mary.poppins on 2004-04-14T18:03:50
How about:
my $foo = ( $bar =~/pattern/ )
? ( some expression )
: ( some other expression );
Re:whitespace
rob_au on 2004-04-20T12:57:02
I do something very similar to this in my code on a regular basis - What I normally do is shift the ternary operators back onto the leading line so that it is immediately apparent that the line has not ended. For example:This of course is more of a question of style than anything else, and I know that I am somewhat obtuse and anal at times with regard to my layout style.my $foo = ( $bar =~/pattern/ ) ?
( some expression ):
( some other expression );Re:Cool but...
pudge on 2004-04-20T21:58:49
Like this?Sorry.my $mode = (ref $hash->{CALLBACK} eq 'CODE'
? kAEQueueReply
: (exists $hash->{REPLY} # check event setting
? $hash->{REPLY}
: exists $self->{REPLY} # check global setting
? $self->{REPLY}
: 1 # default to wait
)
? kAEWaitReply
: kAENoReply)
| (exists $hash->{MODE}
? $hash->{MODE}
: exists $self->{MODE}
? $self->{MODE}
: (kAECanInteract | kAECanSwitchLayer));:-) Re:Cool but...
bart on 2004-04-14T19:59:06
Then try this. (;-))my $x = do {
if ($test) {
$y;
} else {
$z;
}
};