#!/home/domi/pugs/run/pugs # # Interaktiver RPN Rechner # my $line; # Einlesen der aktuell eingegebenen Zeile while($line = =$*IN) { my @stack; # Aufspalten der Zeile an Leerzeichen, danach # Array durchgehen, $token enthalt das aktuelle # Zeichen for $line.split() -> $token { # given-when ist ein neues Konstrukt in Perl6 # dabei wird kein normaler Vergleich, sondern # ein Smart Match durchgefuehrt given $token { # Pattern fur das Erkennen von Zahlen auch mit # Vorzeichen when /-?\d+/ {@stack.push($token)} # Behandlung der Rechenoperationen when '+' {@stack.push(@stack.pop + @stack.pop)} when '-' {my $t = @stack.pop; @stack.push(@stack.pop - $t)} when '*' {@stack.push(@stack.pop * @stack.pop)} when ':' {my $t = @stack.php; @stack.push(@stack.php / $s)} default {die "error: $token"} } } # Der Stack enthaelt nur noch das Ergebnis. say @stack[0]; }