My daughter needed a calculator to check square roots last night. I couldn't believe it - we didn't have one! Well, I had my beloved HP 15C from engineering school days.
RPN is cool - right?! Yeah, you can imagine how that went over. So, then I grabbed a slide rule. I know! You guessed it - worse reaction than RPN. So then I grabbed her Dell netbook, which was running Ubuntu Linux , and wrote a Perl hack that was basically
#!/usr/bin/perl
print "Enter a number\n";
$number = stdin
;
chomp $number;
$root = sqrt $number;
print "The square root of $number is $root\n";
Ha! It worked and she used it. Perl to the rescue!
Oops. Looks like line three needed the angle brackets around stdin escaped.
ReplyDeleteuse 5.010;
ReplyDeletesay "Enter your number: ";
chomp( my $number = );
my $root = sqrt $number;
say "The square root of $number = $root";
Actually, you don't need the second variable; instead of these two lines:
ReplyDeletemy $root = sqrt $number;
say "The square root of $number = $root";
The following single line would be better:
say "The square root of $number = ", sqrt $number;
And for a proper program, you might want to include the ability to get the root of as many numbers as you like, plus add checking for invalid numbers:
#!/usr/bin/perl
use warnings;
use strict;
use 5.010;
# This program calculates square roots for user-defined (and valid) numbers:
say "Enter a number, or press to exit: ";
{
chomp( my $number = );
if ( $number =~ /^\s*$/ ) {
say "Have a nice day!";
last;
}
elsif ( $number =~ /^-/ ) {
say "Sorry, we can't take the square root of a negative number!";
say "Try a postive number this time.. ";
redo;
}
elsif ( $number =~ /\D+/ ) {
say "That's not a valid number! Please try again: ";
redo;
}
else {
say "The square root of $number = ", sqrt $number;
say "next number, please: ";
redo;
}
}
Sorry for the multiple comments, but obviously STDIN inside angle brackets was deleted from my two previous comments.
ReplyDelete