Syntactic Confectionery Delight PerlMonks

### Simple Calculator

by ncw (Friar)
 on Jun 29, 2000 at 01:20 UTC Need Help??
 Category: Utility Scripts Author/Contact Info ncw Nick Craig-Wood Description: A simple perl calculator for use on the command line. See code for instructions. ```#!/usr/bin/perl -w # # Nick's simple calculator by Nick Craig-Wood # # I usually call this program = # # You can use it with command line arguments, eg # = 2 + 2 # = 230.4e3 x 60 x 60 x 24 / 8 / 1024 / 1024 / 1024 # ( Note that 'x' is translated to '*' on the command line to avoid sh +ell # annoyances ) # # You can also run it with no arguments in which case it will run a # calculator shell. It will give you a bit of help when you run it. # # = # Welcome to Nick's Simple calculator # Last item is \$l, answers stored in \$a[..], \$n is last entry # > 2 # \$a[0]= 2 # > (\$l+2/\$l)/2 # \$a[1]= 1.5 # > (\$l+2/\$l)/2 # \$a[2]= 1.41666666666667 # > (\$l+2/\$l)/2 # \$a[3]= 1.41421568627451 # # You can type any valid perl you like. # # It uses Term::Readline so you can press up arrow to get your # previous calculation back # # Note: it deliberately doesn't 'use strict' to make it a friendlier # calculator ;-) use Term::ReadLine; \$args = scalar(@ARGV); \$ENV{"PERL_RL"}="Gnu"; if (\$args) { \$sum = join(" ", @ARGV); \$sum =~ s/x/*/g; print "\$sum = ", eval(\$sum), "\n"; die "Error: \$@\n" if \$@; exit; } \$term = new Term::ReadLine('='); print "Welcome to Nick's Simple calculator\n"; print "Last item is \\$l, answers stored in \\$a[..], \\$n is last entry\ +n"; while (defined (\$_ = \$term->readline("> "))) { chomp; push @a, eval(\$_); print "Error: \$@" if \$@; \$n = @a-1; \$l = \$a[\$n]; print "\\$a[\$n]= ", \$l, "\n" if defined \$l; } print "quit\n"; exit; ```
Replies are listed 'Best First'.
RE: Simple Calculator
by cwest (Friar) on Jun 29, 2000 at 18:12 UTC
That's pretty cool, here's a simple calculator too ;-)
```#!/usr/local/bin/perl -w
use strict; \$|++; print "> ";
print eval, "\n> " while chomp( \$_ = <STDIN> );
```
Enjoy!
```--
Casey
```
This can be done in a one-liner:
```perl -ple '\$_ = "> " . eval'
```alias calc='perl -ple '\''\$_ = "> " . eval'\'''
You can exit the loop with ^D.

Remember: There's always one more bug.
Re: Simple Calculator
by PhilHibbs (Hermit) on Aug 16, 2004 at 13:28 UTC
Here's one that takes its input from, and writes the results to, the Windows clipboard. It will process multiple lines independently, and will transform this:
```49.99*1.175
(49.99*1.175)*5```
into this:
```49.99*1.175 =	58.73825
(49.99*1.175)*5 =	293.69125```
If you change the lines, copy them, and recalculate, then it will ignore anything after the = signs.

Create A New User
Node Status?
node history
Node Type: sourcecode [id://20260]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2017-11-18 16:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
In order to be able to say "I know Perl", you must have:

Results (277 votes). Check out past polls.

Notices?