Perl - como crear archivos de acceso directo con perl????

 
Vista:

como crear archivos de acceso directo con perl????

Publicado por rrcoolb (5 intervenciones) el 01/09/2005 03:33:33
Hola a todos tengo un quilombito con Perl, tengo que crear una agenda con un archivo dat y tengo que darle la longitud a los campos de los registos, en basic lo hacia con TYPE
TYPE
nombre= string[15]
direccion=string[15]
etc, la cosa que en perl no se como hacerlo y tampoco como crear un archivo de acceso directo(RANDOM) para accederlo con una clave
Si alguien tiene alguna idea que me la pase!!!
gracias a todos!!
RRcoolB
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como crear archivos de acceso directo con perl?

Publicado por jorge (2 intervenciones) el 03/09/2005 10:18:39
Tenes que usar DBM, este formato tambien lo usan sendmail y otros programas unix.
Te permite acceder de manera directa a los registros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como crear archivos de acceso directo con perl?

Publicado por RRCOOLB (5 intervenciones) el 11/09/2005 03:23:18
Es para untrabajo de la U, tengo que hacer una agenda sin usar una base de datos solo archivos, con la registros de longitud fija, tengo que hacer una funcion hash para acceder a los registros, probe con pack("A30,$nombre), pero no funciona del todo bien, si tenes otra idea pasamela!!!
gracias por tu ayuda!!!
RRCOOLB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como crear archivos de acceso directo con perl?

Publicado por Joaquin Ferrero (48 intervenciones) el 03/09/2005 17:32:42
Otra opción sería usar DBD::RAM

http://search.cpan.org/~jzucker/DBD-RAM-0.072/RAM.pm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como crear archivos de acceso directo con perl?

Publicado por rrcoolb (5 intervenciones) el 11/09/2005 03:18:15
Es par un laburo de la U, tengo que crear una agenda y accederla directamente,
no puedo usar una base de datos, solamente archivos, lo probe con pack("A30, nombre) por ejemplo, no funciona del todo bien, si sabes otra forma pasmela!!!
gracias por la ayuda!!!!
RRCOOLB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como crear archivos de acceso directo con perl?

Publicado por Joaquin Ferrero (48 intervenciones) el 11/09/2005 20:53:12
Pues eso, archivos... DBD::RAM te permite tener la agenda en ficheros de texto con campos de tamaño fijo, lo que querías.

Otra opción es usar campos separados con comas (CSV), y para ello hay un par de módulos, como el Text::CSV, pero seguro que hay otro más moderno.

Y si quieres acceder 'directamente', te lo tienes que hacer con pack/unpack/printf/sprintf/substr.

Quizás con substr sea una opción, pero desde luego con pack queda mucho mas clara.

Partiendo de esta 'base de datos':
---------------------------------------------------------------------------------------------
Nombre Apellidos Dirección
Joaquin Ferrero San Pedro C/ La Vida 88, 6
rrcoolb001 No lo se C/ No se sabe donde
------------------------------------------------------------------------------------------------

La primera solución lo hace con substr:

#!/usr/bin/perl -w
use strict;
my $FicheroAgenda = 'base.txt';
# Descripción de la agenda:
# Cada clave es el nombre del campo
# Cada valor es un array con dos valores:
# El primero indica la posición de inicio
# El segundo, la longitud
my %formatoagenda = (
nombre => [ 0, 20],
apellidos => [20, 30],
direccion => [50, 40],
);
# Leemos la agenda
my @agenda = do { open AGENDA,"<$FicheroAgenda"; <AGENDA> };
# Quitamos los encabezados
shift @agenda;
# Sacamos los nombres
my %entrada;
foreach my $entrada ( @agenda )
{
chomp($entrada);
foreach my $campo ( keys %formatoagenda )
{
$entrada{$campo} = substr($entrada, $formatoagenda{$campo}[0], $formatoagenda{$campo}[1]);
}
# A pantalla
printf "%-*s|%-*s|%-*s\n",
$formatoagenda{nombre}[1], $entrada{nombre},
$formatoagenda{apellidos}[1], $entrada{apellidos},
$formatoagenda{direccion}[1], $entrada{direccion};
}
------------------------------------------------------------------------------------------------------------
La segunda solución consiste en sustituir el foreach my $campo.... por esta línea:
-------------------------------------------------------------------------------------------------------------
($entrada{nombre}, $entrada{apellidos}, $entrada{direccion}) = unpack("A20 A30 A40",$entrada);
-------------------------------------------------------------------------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como crear archivos de acceso directo con perl?

Publicado por RRCOOLB (5 intervenciones) el 14/09/2005 03:34:27
Joya!!! funciono super bien, no se me habia ocurrido ponerlo en un arreglo asociaivo
te agradezco muchisimo!!!!
Saludos
RRCOOLB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar