in reply to How can I change the perl program involving if-elsif-else conditional to get correct result?

You can do the following, but I will also advise you understand how perl works

Put all your variable into a subroutine, and then iterate over them getting and returning the largest as done below in case (a)

Case a:

#!/usr/bin/perl use warnings; use strict; my $a=0.9; my $b=0.7; my $c=0.5; my $lar_value=max($a,$b,$c); print $lar_value," is the greatest",$/; sub max{ my $init=shift(@_); foreach(@_){ if($init>$_){ $init=$init; }else{$init= $_} } return $init; }

Case b: One can also use a module **List::Util** from CPAN http://search.cpan.org/~pevans/Scalar-List-Utils-1.25/lib/List/Util.pm. like this

#!/usr/bin/perl use warnings; use strict; use List::Util qw(max); my $a=0.9; my $b=0.7; my $c=0.5; my $lar_value=max($a,$b,$c); print $lar_value, " is the greatest\n";
I hope this helps.
  • Comment on Re: How can I change the perl program involving if-elsif-else conditional to get correct result?
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: How can I change the perl program involving if-elsif-else conditional to get correct result?
by nemesdani (Friar) on Apr 23, 2012 at 11:45 UTC
    Or instead of reinventing the wheel, you could sort a list:

    my @list = sort ($a, $b, $c); print $list[$#list];

    I'm too lazy to be proud of being impatient.
      If you are going to do it like that, you need a numeric sort, not the default alphabetic sort:
      @sorted = sort{$a <=> $b}($x, $y, $z); print $sorted[-1];
      Also, $a and $b are special variables reserved for sort and other purposes. Don't uses these for normal user variables.