• Publicidad

Errores de sintaxis con 'strict'

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Errores de sintaxis con 'strict'

Notapor visualfree » 2009-11-26 13:43 @613

Ok, pero haré un programa completo y lo publicaré acá.
visualfree
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2009-11-19 03:01 @167

Publicidad

Re: Errores de sintaxis con 'strict'

Notapor explorer » 2009-11-26 14:17 @637

Huummm... muchas gracias por el aporte, aunque... esa no es la finalidad de estos foros :)

Desde luego, ver un programa completo siempre es mejor que nada.

Yo me conformaré en saber que estás aprendiendo Perl.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Errores de sintaxis con 'strict'

Notapor visualfree » 2009-11-26 16:47 @741

1.- strict: En general lo que hace la directiva strict es generar errores al programar en caso de que se encuentre lo que pueda considerar "programación insegura".

La explicación que puedo dar sobre los errores con respecto al uso de strict es que todas las variables deben ser declaradas o iniciadas con "my" para evitar todo tipo de errores.

2.- Bueno, amigos, acá les dejo un pequeño código que hice gracias a todo lo aprendido en este foro (un poco básico pero se hace lo que se puede).

Base de datos MySQL:
Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
CREATE TABLE `perl`.`usuarios` (
  `id_usuarios` INT  NOT NULL AUTO_INCREMENT,
  `nombre` CHAR(20)  NOT NULL,
  `apellido` CHAR(20)  NOT NULL,
  `telefono` CHAR(20)  NOT NULL,
  `edad` CHAR(20)  NOT NULL,
  PRIMARY KEY (`id_usuarios`)
)
ENGINE = MyISAM;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Mi módulo de conexión:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. package Conectar;
  3. use strict;
  4. use DBI;
  5. my $db_user = "root";
  6. my $db_pass = "Tu Clave";
  7. my $host_name = "localhost";
  8. my $db_name = "perl";
  9. my $q_string = "DBI:mysql:host=$host_name;database=$db_name";
  10. sub connect{
  11.     return (
  12.         DBI->connect( $q_string, $db_user, $db_pass,
  13.                     { PrintError => 0, RaiseError => 1}
  14.         )
  15.     );
  16. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Mi programa:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #########################################################
  2. #Autor:Ricardo                                          #
  3. #Nick:VisualFree | BoF                                  #
  4. #Datos:Programa Ingresa,Muestra,Elimina y Busca Usuarios#
  5. #DB:Mysql+DBI                                           #
  6. #########################################################
  7. use Conectar;
  8. use warnings;
  9. use Switch;
  10.  
  11. &menu();
  12.  
  13. sub menu{
  14.         system('clear');
  15.         print "##############################\n";
  16.         print "#    Programa Básico Bdd     #\n";
  17.         print "#   ####################     #\n";
  18.         print "#    1-Ingresar Usuario      #\n";  
  19.         print "#    2-Monstrar usuarios     #\n";
  20.         print "#    3-Eliminar Usuarios     #\n";  
  21.         print "#    4-Buscar Usuarios       #\n";
  22.         print "#    5-Salir                 #\n";
  23.         print "##############################\n";
  24.         print "Escoja Opcion:";
  25.         chomp($opt=<stdin>);
  26.         switch($opt){
  27.                 case 1 {
  28.                         &ingresar();
  29.                 }case 2 {
  30.                         &mostrar();
  31.                 }case 3 {
  32.                         &eliminar();
  33.                 }case 4 {
  34.                         &buscar();
  35.                 }case 5 {
  36.                         break; 
  37.                 }
  38.                 default {
  39.                         &menu();
  40.                 }      
  41.         }
  42. }
  43. sub ingresar {
  44.         print "Ingresar \n";
  45.         print "###########";
  46.         print "\n Ingresar Nombre:";   
  47.         $nom=<stdin>;
  48.         print "\n Ingresar Apellido:"; 
  49.         $ape=<stdin>;
  50.         print "\n Ingresar Telefono:"; 
  51.         $tel=<stdin>;
  52.         print "\n Ingrese Edad:";      
  53.         $ed=<stdin>;
  54.         my($dbh,$sth);
  55.         $dbh = Conectar->connect();
  56.         my $query  = "INSERT INTO usuarios (nombre,apellido,telefono,edad) VALUES ('$nom','$ape','$tel','$ed')";
  57.         my $sth    = $dbh->prepare($query);
  58.         $sth->execute();
  59.         $sth->finish();
  60.         $dbh->disconnect;
  61.         print "\n Sus Datos han sido Ingresados Con Exito!\n";
  62.        
  63.         print "¿Desea Agregar un Nuevo Usuario S/N?:";
  64.         chomp($continuar=<stdin>);
  65.         switch($continuar)
  66.         {
  67.                 case 'S' { &ingresar();}
  68.                 case 's' { &ingresar();}
  69.                 case 'n' { &menu();}
  70.                 case 'N' { &menu();}           
  71.                 default  {
  72.                            &menu();
  73.                 }
  74.         }
  75. }
  76.  
  77. sub mostrar{
  78.         print "Mostrar \n";
  79.         print "#######\n";
  80.         my($dbh,$sth);
  81.         $dbh = Conectar->connect();
  82.         my $query  = 'SELECT id_usuarios,nombre,apellido,telefono,edad FROM usuarios';
  83.         my $sth    = $dbh->prepare($query);
  84.         $sth->execute();
  85.         my($id_usuarios,$nombre,$apellido,$telefono,$edad);
  86.         $sth->bind_columns(\$id_usuarios,\$nombre,\$apellido,\$telefono,\$edad);
  87.         while ($sth->fetch()) {
  88.                  print "$id_usuarios - $nombre - $apellido - $telefono - $edad \n";
  89.         }
  90.         $sth->finish();
  91.         $dbh->disconnect;
  92.        
  93.         print "¿Desea Continuar S/N?:";
  94.         chomp($continuar=<stdin>);
  95.         switch($continuar)
  96.         {
  97.                 case 'S' { &menu();}
  98.                 case 's' { &menu();}
  99.                 case 'n' { print "\n Gracias por usar este programa! \n"; }
  100.                 case 'N' { print "\n Gracias por usar este programa! \n"; }
  101.                 default  {
  102.                         print "\n Gracias por usar este programa! \n"; 
  103.                 }
  104.         }
  105. }
  106. sub eliminar{
  107.         print "Eliminar \n";
  108.         print "######## \n";
  109.         print "Ingresa el Id que deseas Eliminar;";
  110.         $id=<stdin>;
  111.         my($dbh,$sth);
  112.         $dbh = Conectar->connect();
  113.         my $query  ="DELETE  from  usuarios WHERE id_usuarios='$id'";;
  114.         my $sth    = $dbh->prepare($query);
  115.         $sth->execute();
  116.         $sth->finish();
  117.         $dbh->disconnect;
  118.         print "\n Sus Datos han sido eliminados! \n";
  119.         print "¿Desea Continuar S/N?:";
  120.         chomp($continuar=<stdin>);
  121.         switch($continuar)
  122.         {
  123.                 case 'S' { &menu();}
  124.                 case 's' { &menu();}
  125.                 case 'n' { print "\n Gracias por usar este programa! \n"; }
  126.                 case 'N' { print "\n Gracias por usar este programa! \n"; }
  127.                 default  {
  128.                         print "\n Gracias por usar este programa! \n";
  129.                 }
  130.         }
  131.  
  132. }
  133. sub buscar{
  134.         print "Buscar \n";
  135.         print "#####  \n";
  136.         print "Ingrese Id a Buscar:";
  137.         $id=<stdin>;
  138.         my($dbh,$sth);
  139.         $dbh = Conectar->connect();
  140.         my $query  = "SELECT id_usuarios,nombre,apellido,telefono,edad FROM usuarios WHERE id_usuarios='$id'";
  141.         my $sth    = $dbh->prepare($query);
  142.         $sth->execute();
  143.         my($id_usuarios,$nombre,$apellido,$telefono,$edad);
  144.         $sth->bind_columns(\$id_usuarios,\$nombre,\$apellido,\$telefono,\$edad);
  145.         while ($sth->fetch()) {
  146.                  print "$id_usuarios - $nombre - $apellido - $telefono - $edad \n";
  147.         }
  148.         $sth->finish();
  149.         $dbh->disconnect;      
  150.         print "¿Desea Continuar S/N?:";
  151.         chomp($continuar=<stdin>);
  152.         switch($continuar)
  153.         {
  154.                 case 'S' { &menu();}
  155.                 case 's' { &menu();}
  156.                 case 'n' { print "\n Gracias por usar este programa! \n"; }
  157.                 case 'N' { print "\n Gracias por usar este programa! \n"; }
  158.                 default  {
  159.                         print "\n Gracias por usar este programa! \n";
  160.                 }
  161.         }
  162. }
  163. sub error{
  164.         print "Error al escojer Opcion \n";
  165.         &menu();
  166. }
  167.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Ahora empezaré con otro ejemplo similar con uso de Gtk2.

Saludos, y perdón por lo básico.
visualfree
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2009-11-19 03:01 @167

Re: Errores de sintaxis con 'strict'

Notapor explorer » 2009-11-26 19:43 @863

1.- strict da avisos de que la programación no es estricta. En otros lenguajes, la programación siempre es estricta, como por ejemplo en Java o C.

2.- El uso del módulo Switch está completamente desaconsejado (tiene algunos fallos). Es recomendable usar el given/when del Perl v5.10.
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron