Home Perl Programming Page 8 - Perl 101 (part 6) - The Perl Toolbox

# Math Class - Perl

This time, Perl 101 visits some of Perl's more useful in-builtfunctions, and teaches you the basics of pattern matching and substitution.Also included is a list of common string and math functions, together withexamples of how to use them.

Rating:  / 6
August 30, 2000

SEARCH DEV SHED

TOOLS YOU CAN USE
And finally, Perl also comes with a set of math functions that allow you to carry out complex mathematical operations. You probably won't need these, but you should at least know of their existence.

Sine of a angle: sin(\$radians)

Cosine of a angle: cos(\$radians)

Square root of a number: sqrt(\$variable)

Exponent of a number: exp(\$variable)

Natural logarithm of a number: log(\$variable)

Absolute value of a number: abs(\$variable)

Decimal value of a number from hexadecimal: hex(\$variable)

Decimal value of a number from octal: oct(\$variable)

Integer portion of a number: int(\$variable)

And here's an example that demonstrates all these:
```#!/usr/bin/perl
# set up the choices
print "Pick from the choices below:\n";
print "Sine of an angle[1]\n";
print "Cosine of an angle[2]\n";
print "Square root of a number[3]\n";
print "Exponent of a number[4]\n";
print "Natural logarithm of a number[5]\n";
print "Absolute value of a number[6]\n";
print "Decimal value of a number from hexadecimal[7]\n";
print "Decimal value of a number from octal[8]\n";
print "Integer value[9]\n";
chomp(\$choice = );
# and process them
if (\$choice == 1 || \$choice == 2)
{
print "Enter the angle in radians: ";
chomp(\$angle = );
if(\$choice == 1)
{
\$value = sin(\$angle);
print("Sine of \$angle is \$value\n");
}
else
{
\$value = cos(\$angle);
print("Cosine of \$angle is \$value\n");
}
}
elsif(\$choice == 3)
{
print "Enter a positive number: ";
chomp(\$number = );
\$value = sqrt(\$number);
print("The square root of \$number is \$value\n");
}
elsif(\$choice == 4)
{
print "Enter a number: ";
chomp(\$number = );
\$value = exp(\$number);
print("e ** \$number = \$value\n");
}
elsif(\$choice == 5)
{
print "Enter a number: ";
chomp(\$number = );
\$value = log(\$number);
print("The natural log of \$number is  \$value\n");
}
elsif(\$choice == 6)
{
print "Enter a number: ";
chomp(\$number = );
\$value = abs(\$number);
print("The absolute value of \$number is \$value\n");
}
elsif(\$choice == 7)
{
print "Enter a number: ";
chomp(\$number = );
\$value = hex(\$number);
print("The decimal value of \$number is \$value\n");
}
elsif(\$choice == 8)
{
print "Enter a number: ";
chomp(\$number = );
\$value = oct(\$number);
print("The decimal value of \$number is \$value\n");
}
elsif(\$choice == 9)
{
print "Enter a number: ";
chomp(\$number = );
\$value = int(\$number);
print("The integer value of \$number is \$value\n");
}
else
{
print("Invalid choice\n");
}
```

And finally, if you need to use Perl to generate random numbers, you should know about the rand() function. The rand() function takes a number as parameter, and generates a random number between 0 and that number. Here's an example:
```#!/usr/bin/perl
print rand(9);
```

And this could return
```
7.06539493566379
```

If you omit the parameter, you'll get a random number between 0 and 1. And here's a script that asks you for a numerical range, and then returns a random number within that range:
```
#!/usr/bin/perl
# get the limits
print "Enter the lower limit of the range: ";
\$lower = ;
chomp (\$lower);
print "Enter the upper limit of the range: ";
\$upper = ;
chomp (\$upper);
# keep generating until number falls within range
while (\$random < \$lower)
{
\$random = int(rand(\$upper));
}
# then print
print \$random;
```

And that's about all we have time for today. We'll be back with more in a couple of weeks - so keep coming back!