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";