> $no or $false or $yes and $true and say "OK then" ;
>
> $no or $false or say "OK then" if $yes and $true ;
Thank you for your reply.
I know there are other ways to do it. I've had no choice but to do it other
ways in Perl5.
I don't think I have ever used that notation (outside of file open and
close) - not because I don't know it, but because it puts the emphasis on the
wrong values. It also doesn't read very smoothly.
In the samples you gave I had to read the entire line to see what the outcome
of the code is. In code you either give emphasis to the condition or to the
action that happens should the condition prove successful. Generally
speaking, if the condition is the most important thing I will put it in a
normal if/unless block.
if ($no or $false) {
die "Some horrible death" unless $i_should_not;
}
But if the action is more important then I tend use a modifier.
print_greeting("Hello") if $logged_in unless $asked_not_too;
Allowing for multiple nested modifiers allows the action to retain its
significance. After I sent the last email I came across a statement in the
code I was working on that would have phrased better if I could use both an
if and an unless. These things do come up - we Perl 5 coders have just
trained ourselves to do things another ways.
The biggest setback I see to nested modifiers is that the order of lexical
scopes visually read on the screen are reversed in execution. But that is
already a problem with a single level statement modifier. I don't think
multiple levels introduces any more problem than is already there.
Plus - if there are multiple modifiers then Perl poetry can get even better.
And everybody wins if Perl poetry is better. :)
say "I'm ok"
if $i_am_ok
if $you_are_ok
while $the_world_is_ok;
Paul