if (defined $ARGV[0] && defined $ARGV[1] && defined $ARGV[2] && defined $ARGV[3]) { ... } else { #Die if less than 4 args given die "Please define at least 4 arguments\n"; } #### if(@ARGV < 4) { die "Please define at least 4 arguments\n"; } # I must have 4 arguments at this point. #### if ($ARGV[0]=="tri") { my $figure="triangle"; } elsif ($ARGV[0]=="cir") { my $figure="circle"; } ... if ($ARGV[1]=="area") { my $op="area"; if ($figure=="rectangle") { my $reqargs=2; } elsif ($figure=="square") { my $reqargs=1;} elsif ($figure=="triangle") { my $reqargs=2; } elsif ($figure=="circle") { my $reqargs=1; } } #### my $shape = shift @ARGV; # take first argument off ARGV my %shapes = ( "tri" => "triangle", "cir" => "circle", "req" => "rectangle", "sqr" => "square" ); my $figure = $shapes{$shape} or die "Unknown shape $shape\n"; #### my $shape = shift @ARGV; # take first argument off ARGV my $op = shift @ARGV; # take second argument off ARGV my %shapes = ( "tri" => { name => "triangle", area => 2, # required number of args peri => 3, hypo => 2, }, "sqr" => { name => "square", area => 1, peri => 1, }, "rec" => { name => "rectangle", area => 2, peri => 2, }, "cir" => { name => "circle", area => 1, peri => 1, }, ); # Get full name of figure. my $figure = $shapes{$shape}{name} or die "Unknown shape: $shape\n"; # Determine how many arguments we require. my $reqargs = $shapes{$shape}{$op} or die "Unknown operator $op". " or $op does not work with shape $figure"; #### elsif ($refsum==12.2) { my $diameter=$ARGV[3]; my $answer=$diameter*$pi; } # $answer stops existing HERE #### elsif ($refsum==12.2) { my $diameter=$ARGV[3]; $answer=$diameter*$pi; } #### #!usr/bin/perl -w use warnings; use strict; print "Welcome to Will's Plane Geometry Calculator.\nThe ". "first argument should be tri, cir, rec, or sqr.\n". "The second argument should be area, peri, or ". "hypo.\nIf you give hypo as the second argument, ". "the next two arguments should ". "be the known sides of the traingle.\nthe peri arg ". "will also find circumference ". "if cir is given for the figure. Specify the ". "diameter to find this.\nPi is approximated at ". "3.141592654 (simply change my pi if a different ". "approximation is needed)\nTo find area of a circle ". "specify the radius.\nI think you can figure ". "out the rest.\n", "-" x76, "\n"; my $pi=3.141592654; if (@ARGV < 3) { die "Please define at least 3 arguments\n"; } my $shape = shift @ARGV; # take first argument off ARGV my $op = shift @ARGV; # take second argument off ARGV my %shapes = ( "tri" => { name => "triangle", area => 2, peri => 3, hypo => 2, }, "sqr" => { name => "square", area => 1, peri => 1, }, "rec" => { name => "rectangle", area => 2, peri => 2, }, "cir" => { name => "circle", area => 1, peri => 1, }, ); my %operators = ( "area" => "area", "peri" => "perimeter", "hypo" => "hypotenuse", ); # Get full name of figure. my $figure = $shapes{$shape}{name} or die "Unknown shape: $shape\n"; # Determine how many arguments we require. my $reqargs = $shapes{$shape}{$op} or die "Unknown operator $op". " or $op does not work with shape $figure"; # Get our operator name my $operator = $operators{$op}; print "\n INFO PRINTOUT FROM SCALARS:\n FIGURE: $figure\n ", " OPERATION: $operation\n REQUIRED ARGS: ". " $reqargs\n\n"; # Since we know $reqargs, check that we can go ahead at # this point. if(@ARGV < $reqargs) { die "Not enough arguments provided for this ". "function."; } my $answer; if($shape eq "tri") { if($op eq "area") { my ($base, $height) = @ARGV; $answer = 0.5*$base*$height; } elsif($op eq "peri") { my ($side1, $side2, $side3) = @ARGV; $answer = $side1 + $side2 + $side3; } elsif($op eq "hypo") { my ($side1, $side2) = @ARGV; $answer = sqrt( $side1*$side1 + $side2*$side2 ); } } elsif($shape eq "cir") { if($op eq "peri") { my ($diameter) = @ARGV; $answer = $diameter*$pi; } elsif($op eq "area") { my ($radius) = @ARGV; $answer = $radius*$radius * $pi; } } elsif($shape eq "sqr") { if($op eq "area") { my ($side) = @ARGV; $answer = $side*$side; } elsif($op eq "peri") { my ($side) = @ARGV; $answer = $side*4; } } elsif($shape eq "rec") { if($op eq "area") { my ($length, $width) = @ARGV; $answer = $length*$width; } elsif($op eq "peri") { my ($length, $width) = @ARGV; $answer = $length*2 + $width*2; } } if (defined $answer) { print "\n\n","-" x76,"\n","Calculations Completed ". "Successfully!\n"; print "Your answer is: $answer\n"; } else { print "\n\n","-" x76,"\n","Calculations Completed.". "\n Operation Unsuccessful.\n Cause ". "Unknown.\n"; } print "pi is $pi\n";