On Tue, 15 Feb 2005, John W. Krahn wrote:

> Oliver Fuchs wrote:
> >Hi,
> 
> Hello,
> 
> >I am a very beginner to perl so may be this question is stupid or too low
> >leveled then please ignore.
> >
> >I tried to wright a little calculator in perl - nothing difficult - very
> >simple:
> >
> >#!/usr/bin/perl -w
> >
> >print "First value: ";
> >chomp ($value1=<STDIN>);
> >print "Second value: ";
> >chomp ($value2=<STDIN>);
> >print "What operator (+ - * /)? ";
> >chomp ($operator=<STDIN>);
> >if ($operator eq "+") {
> >     print ($value1 + $value2, "\n");
> >     } elsif ($operator eq "-") {
> >     print ($value1 - $value2, "\n");
> >     } elsif ($operator eq "*") {
> >     print ($value1 * $value2, "\n");
> >     } elsif ($operator eq "/") {
> >     print ($value1 / $value2, "\n");
> >     } else {
> >     print "Keep it simple \n";
> >     }
> 
> You could do something like this:
> 
> 
> #!/usr/bin/perl -w
> use strict;
> 
> my %calc = (
>     '+' => sub { return $_[0] + $_[1] },
>     '-' => sub { return $_[0] - $_[1] },
>     '*' => sub { return $_[0] * $_[1] },
>     '/' => sub { return $_[0] / $_[1] },
>     );
> 
> print 'First value: ';
> chomp( my $value1 = <STDIN> );
> print 'Second value: ';
> chomp( my $value2 = <STDIN> );
> print 'What operator (+ - * /)? ';
> chomp( my $operator = <STDIN> );
> 
> if ( exists $calc{ $operator } ) {
>     print $calc{ $operator }->( $value1, $value2 ), "\n";
>     }
> else {
>     print "The operator '$operator' does not exist.\n";
>     }
> 
> 

Hi,
thanks for that (looks better than mine).

> >Originell I tried to put the operator from <STDIN> directly to print like
> >this:
> >
> >[...]
> >print "First value: ";
> >chomp ($value1=<STDIN>;
> >print "Second Value: ";
> >chomp ($value2=<STDIN>;
> >print "Operator: ";
> >chomp ($value3=<STDIN>;
> >
> >print ($value1 $value3 $value2, "\n");
> >
> >But that was malfaunctioning. Is there a way to put the STDIN for the
> >operator directly in the print line or do I always have to keep it that 
> >long
> >winded?
> 
> You could always use the eval() function:
> 
> perldoc -f eval

Thanks again. It worked for me with:
#!/usr/bin/perl -w
print "Enter a expression to calculate:\n";
chomp($expression=<STDIN>);
print eval($expression), "\n";

Oliver
-- 
... don't touch the bang bang fruit

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to