Here is the latest version of my calculator script. It treats each line of input, stopping on an '=' character, as a separate calculation, and appends the answer after an '=' character. That way you can easily amend the calculation and perform it again.
@rem = '--*-Perl-*--
@echo off
perl "%~dpnx0" %*
goto endofperl
@rem ';
#!perl
#line 8
use strict;
use warnings;
use Win32::Clipboard;
sub X { return sprintf("%x",$_[0]); }
sub x { return X($_[0]); }
my $CLIP = Win32::Clipboard();
my $text = $CLIP->GetText();
my @text = split /\n/, $text;
my @results = ();
for ( @text ) {
s[\x0a][];
s[\x0d][];
s/([^=]+)=.+/$1/; # trim after '='
s/(^|[^0-9\.])0+/$1/g; # remove leading zeros (don't want octal)
print "\$_.=' =\t'.($_)\n";
eval("\$_.=' =\t'.($_)");
print " = $_\n";
push @results, $_;
}
$CLIP->Set(join("\n",@results)."\n");
__END__
4*3
11-4*2
010+020+030 = 61
x(123) = 7b
:endofperl