convdegrees.pl to HTML.

index -|- end

Generated: Tue Feb 2 17:54:28 2010 from convdegrees.pl 2007/11/20 3.5 KB.

#!/perl -w
# NAME: convdegrees.pl
# AIM: To convert Farenheight to Centigrade and vice versa
# 20/11/2007 geoff mclane - http:geoffair.net/mperl
use strict;
use warnings;
my $verbose = 0;
my $convtype = 0;
my $value = -1;
my $conv = 0;
my $msg1 = "degrees Fahrenheit";
my $msg2 = "degrees Celsius";
###my $fahr = 90;
###my $cels = convert_f2c($fahr);
###my $f2 = convert_c2f($cels);
###print "$fahr degrees Fahrenheit equals $cels degrees Celsius.\n";
###print "$cels degrees Celsius equals $f2 degrees Fahrenheit.\n";
parse_arguments(@ARGV);
if ($value == -1) {
   print "ERROR: Did not find a number in arguments ...\n";
} else {
   if ($convtype == 1) {
      $conv = convert_f2c($value);
      print "$value $msg1 equals $conv $msg2\n";
   } elsif ($convtype == 2) {
      $conv = convert_c2f($value);
      print "$value $msg2 equals $conv $msg1\n";
   } else {
      print "ERROR: Did not find an F or C in arguments ...\n";
   }
}
exit(0);
#####################
sub convert_f2c {
   my $fahr = $_[0];
   my $cels = ($fahr - 32) * 5/9;
   $cels = (int( ($cels + 0.005) * 100 ) / 100);
   return $cels
}
sub convert_c2f {
   my $cels = $_[0];
   my $fahr = (($cels * 9) / 5) + 32;
   $fahr = (int( ($fahr + 0.005) * 100 ) / 100);
   return $fahr
}
sub give_little_help {
   print "Enter degrees Celsius and get Fahrenheit, or\n";
   print "enter degrees Fahrenheit and get Celcius.\n";
   print "Example: 90 F, will output -\n";
   print "90 degrees Fahrenheit equals 32.22 degrees Celsius.\n";
   print "Just the letter denoting the degrees is sufficient.\n";
   die "Happy converting ...\n";
}
sub parse_arguments {
    my @av = @_;
    my $arg = '';
   my $args = '';
   my $gotnum = 0;
    while (@av) {
        $arg = $av[0];
      $args .= ' ' if length($args);
      $args .= $arg;
        if ($arg eq '--help' || $arg eq '-h' || $arg eq '-?') {
            give_little_help(); # show help and exit
        } elsif ($arg eq '--verbose' || $arg eq '-v') {
            $verbose = 1;
      } else {
         # can be 90F, or 90 F, or 90.2 Fahrenheit ...
         if ($gotnum) {
            if ($arg =~ /^(F|C).*/i) {
               if (lc($1) eq 'f') {
                  $convtype = 1;
               } else {
                  $convtype = 2;
               }
            } else {
               print "Problem with argument [$arg] - NOT begin F or C?\n";
               print "Had arguments [$args]\n";
               give_little_help();
            }
         } else {
            if ($arg =~ /^\d+/) {
               if ($arg =~ /^\d+\.*\d*$/) {
                  $value = $arg;
               } else {
                  # assume number plus letter
                  if ($arg =~ /^(\d+)(.+)/) {
                     $value = $1;
                     if ($2 =~ /^(F|C).*/i) {
                        if (lc($1) eq 'f') {
                           $convtype = 1;
                        } else {
                           $convtype = 2;
                        }
                     } else {
                        print "Problem with argument [$arg] - NOT contain F or C?\n";
                        print "Had arguments [$args]\n";
                        give_little_help();
                     }
                  } else {
                     print "Problem with argument [$arg] - NOT number plus letter?\n";
                     print "Had arguments [$args]\n";
                     give_little_help();
                  }
               }
               $gotnum = 1;
            } else {
               print "Problem with argument [$arg] - NOT begin with number?\n";
               print "Had arguments [$args]\n";
               give_little_help();
            }
         }
      }
      shift @av;
   }
   if ($verbose) {
      print "Had arguments [$args] ...\n";
      print "Got value $value ...\n";
      if ($convtype == 1) {
         print "Will convert Fahrenheit to Celcius.\n";
      } elsif ($convtype == 2) {
         print "Will convert Celcius to Fahrenheit.\n";
      } else {
         print "ERROR: Did not find an F or C in arguments ...\n";
      }
   }
}
# eof - convdegrees.pl

index -|- top

checked by tidy  Valid HTML 4.01 Transitional