Steve Grazzini wrote: > > On Mon, Sep 29, 2003 at 11:04:46PM +0300, Ville Jungman wrote: > > This is real example from what i was doing yesterday: > > if($subs->anna_tilavuus($x+$lisax,$y+$lisay,$z) < 100){ > > $subs->paivita($x); > > $udat{x}=$lisax; > > $udat{y}=$lisay; > > }elsif($subs->anna_tilavuus($x,$y+$lisay,$z) < 100){ > > $udat{y}=$lisay; > > } > > > > If using return values, this could be wrote as: > > ($udat{x},$udat{y})= > > if($subs->anna_tilavuus($x+$lisax,$y+$lisay,$z) < 100){ > > $subs->paivita($x); > > retlast($lisax,$lisay) > > }elsif($subs->anna_tilavuus($x,$y+$lisay,$z) < 100){ > > retlast(undef,$lisay); > > } > > ; > > You can do this already with "do" blocks. > > my $condition = 1; > > ($x, $y) = do { > if ($condition) { 42, 43 } > else { 44, 45 } > };
You don't need a do block, the conditional operator can handle it. @udat{ 'x', 'y' } = $subs->anna_tilavuus( $x + $lisax, $y + $lisay, $z ) < 100 ? do { $subs->paivita( $x ); ( $lisax, $lisay ) } : $subs->anna_tilavuus( $x, $y + $lisay, $z ) < 100 ? ( undef, $lisay ) : (); John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]