Bueno apenas estoy aprendiendo perl y el problema que tengo es que en este programa no me funciona switch quisiera ver si me podrian ayudar para saber cual es el problema.
Tambien quería comentarles esta duda es como comparar caracteres en until ya que intente de varias formas pero me dice que hay un error con una ociones que intente y cuando uso $opcion eq "s" si corrre bien el programa pero nunca se cumple la condicion.
Código
#!/usr/bin/perl use Switch; use warnings; use strict; sub operaciones; my $numuno = 0; my $numdos = 0; $numuno = <stdin>; $numdos = <stdin>; operaciones(); sub operaciones { my $suma = 0; my $resta = 0; my $multiplicacion = 0; my $divicion = 0; my $operacion = 0; my $opcion = 0; do { $operacion = <stdin>; switch($operacion) { case 1 { $suma = $numuno + $numdos; } case 2 { $resta = $numuno - $numdos; } case 3 { $multiplicacion = $numuno * $numdos; } case 4 { $divicion = $numuno / $numdos; } else { $opcion = <stdin>; } } }until( $opcion eq "s"); #until( $opcion == 's'); #until( $opcion == "s"); #until( $opcion != "s"); }
Tambien intente hacer el codigo de esta forma pero me da mucho errores y la unica forma de solucionarlos es poner cada vez que uso las variabes tengo que declararlas como locales poniendo my, quisiera que me dijeran cual es el metodo que debo usar ya que en varios ejemplos que e visto usan este segundo metodo de declarar primero la subrutina
Código
#!/usr/bin/perl use Switch; use warnings; use strict; sub operaciones { my $suma = 0; my $resta = 0; my $multiplicacion = 0; my $divicion = 0; my $operacion = 0; my $opcion = 0; do { $operacion = <stdin>; switch($operacion) { case 1 { $suma = $numuno + $numdos; } case 2 { $resta = $numuno - $numdos; } case 3 { $multiplicacion = $numuno * $numdos; } case 4 { $divicion = $numuno / $numdos; } else { $opcion = <stdin>; } } }until( $opcion eq "s"); #until( $opcion == 's'); #until( $opcion == "s"); #until( $opcion != "s"); } my $numuno = 0; my $numdos = 0; $numuno = <stdin>; $numdos = <stdin>; operaciones();
Bueno espero que me puedan ayudar.
Saludos.
Drewermerc.