Leser: 2
|< 1 2 >| | 13 Einträge, 2 Seiten |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#!/usr/bin/perl use strict; use warnings; use Readonly; Readonly my $SIGN => qr{[+-]?}; Readonly my $NUMBER => qr{\d+\.?\d*}; Readonly my $OP => qr{[\+\-\*\/]}; Readonly my $SPACES => qr{\s*}; Readonly my $VAL => qr{ $SPACES ( $SIGN $NUMBER ) $SPACES }x; Readonly my $EXPR => qr{ $SPACES ( $SIGN $NUMBER $SPACES $OP $SPACES $SIGN $NUMBER ) $SPACES }x; print "Rechenbeispiel eingeben: "; my $task = <STDIN>; chomp($task); my ($expr, $guessed_value) = $task =~ m{^ $EXPR = $VAL $}x;# die "unvalid expression!\n" unless $expr; die "unvalid value!\n" unless $guessed_value; my $true_value = eval ($expr); print $guessed_value == $true_value ? "Rechnung ist richtig!\n" : "Rechnung ist falsch! Ergebnis ist $true_value\n";
moritz+2008-09-28 15:48:17--Hier kann man statt eval auch Math::Expression::Evaluator nehmen und sich um den Sicherheitsaspekt keine Sorgen machen.
sid burn+2008-10-07 10:05:15--"eval is not evil!" ;)
eval <STDIN>;
QuoteDoch, ist es. Der Spruch hat eine daseins Berechtigung.
1
2
3
4
5
6
7
8
eval {
open my $fh, '<', $file or die $!;
# noch was
close $fh or die $!;
};
if ( $@ ) {
warn "Konnte irgendwas nicht machen!\n"
}
Quoteeval ... goto ... selbst Perl wird als evil bzw. als schmutzig bezeichnet
goto &subroutine;
Quoteeval ... goto ... selbst Perl wird als evil bzw. als schmutzig bezeichnet
Quoteund verwunderlich ist das nicht, denn es gibt leider zuviele Entwickler, die es falsch verwenden.
QuoteDa kann eval nichts für, trotzdem ist der Spruch da. Wahrscheinlich
um Entwickler abzuschrecken und um sie zum Nachdenken zu bewegen :-)
|< 1 2 >| | 13 Einträge, 2 Seiten |