• Publicidad

Problemas con un programa

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

Problemas con un programa

Notapor edgar_edgar » 2010-04-02 15:16 @677

¿Qué tal? Estaba trabajando sobre un programa en Perl que logre crear un archivo indexado con berkeley DB.

Estaba viendo el código y me encontré con 2 líneas que por más que investigo no logro captarles.

La primera : use DB_File;

Según yo, tendría que usar un archivo con ese nombre, ¿no?, pero no existe o no lo logro ver.

La segunda línea:
$db_obj=tie(%Mihash,'DB_File',$ArchivoSalidaDBM,O_CREAT|O_RDWR,0644,$DB_BTREE) || die ("Nombre:$Error{'9000'} $ArchivoSalidaDBM $!");

En la parte de tie() aparecen varios atributos que no logro captar. Espero me pudiesen ayudar, porque no lo he logrado entender.

Por su atención, gracias.
edgar_edgar
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2009-08-12 14:53 @662

Publicidad

Re: Problemas con un programa

Notapor explorer » 2010-04-02 15:52 @702

La primera línea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use DB_File;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
se refiere a que el programa va a hacer uso de los recursos aportados por el módulo DB_File. El lugar donde se encuentra el módulo, poco importa, mientras el programa lo encuentre. Si realmente necesitas saber dónde está, prueba con este programa de una línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -le 'use DB_File; print $INC{"DB_File.pm"}, "\n" '
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Y la siguiente
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$db_obj = tie(%Mihash,'DB_File',$ArchivoSalidaDBM,O_CREAT|O_RDWR,0644,$DB_BTREE)
    || die ("Nombre:$Error{'9000'} $ArchivoSalidaDBM $!");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo que hace la función tie() es "unir" a la variable %Mihash con el fichero $ArchivoSalidaDBM. Eso quiere decir que todo lo que hagas con %Mihash quedará grabado en el fichero, en formato DBM. Internamente, la forma de guardar los registros será un árbol binario ($DB_BTREE). En caso de que el fichero $ArchivoSalidaDBM no exista, la bandera O_CREAT indica que será creado. Luego, con O_RDWR indica que el fichero será abierto en modo lectura/escritura.

En caso de que tie() falle, se lanzará un die(), donde nos informará del fallo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problemas con un programa

Notapor salva » 2010-04-05 05:09 @256

explorer escribiste:Si realmente necesitas saber dónde está, prueba con este programa de una línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -le 'use DB_File; print $INC{"DB_File.pm"}, "\n" '
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Otra forma de ver dónde está un módulo es

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perldoc -l DB_File
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En realidad, esto lo que busca es el fichero que contiene la documentación del módulo, pero como en el 99% de los casos, este fichero es el propio .pm, suele funcionar.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680


Volver a Básico

¿Quién está conectado?

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