• Publicidad

Cómo leer un archivo CSV guardado en servidor

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

Cómo leer un archivo CSV guardado en servidor

Notapor andratec » 2014-11-16 14:14 @634

Estimados:

Un gusto saludarles, mi nombre es Alex y les comento que estoy trabajando con un sistema OTRS, por lo cual necesito realizar un módulo personalizado dentro de OTRS.

Pero hasta el momento es mi primer vez que veo este lenguaje y no tengo muy claro cómo hacerlo. Lo que tengo es lo siguiente.

Ambiente: máquina virtual de Amazon con CentOS 6.5.

1. Di permisos al cgi-bin y creé una plantilla con la interfaz del usuario para subir al servidor el archivo csv.
2. Ahora necesito buscar este mismo archivo csv y poder leerlo y extraer columnas como el correo, nombre, etc.
3. El archivo está en la ruta /home/importados con todos los permisos.

Este ejemplo lo encontré en la web y lo pegué a lo que estoy probando...

##################################################################################################
#!/usr/bin/perl

use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use CGI;

my $ruta = "/home/importados/nomina.csv";
open(my $ruta, '<', $file) or die "No puedo abrir el fichero '$file' $!\n";

my $file = $ARGV[0] or die "Necesito un fichero CSV como parámetro\n";

my $sum = 0;
open(my $data, '<', $file) or die "No puedo abrir el fichero '$file' $!\n";

while (my $line = <$data>) {
chomp $line;

my @fields = split "," , $line;
$sum += $fields[2];
}

#####################################################################################################

Al ejecutar en el navegador solo obtengo "Necesito un fichero CSV como parámetro".

El problema asumo que está en cómo buscar la ruta y abrir el archivo. Cualquier ayuda se los agradezco.

¡Saludos desde Chile!
Última edición por explorer el 2014-11-16 14:28 @644, editado 1 vez en total
Razón: Como => Cómo; modulo => módulo; maquina => máquina; centeos => CentOS; cree => creé; template => plantilla; esta => está; encontre => encontré; Cual => Cualquier; admiraciones
andratec
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-11-16 13:56 @622

Publicidad

Re: Cómo leer un archivo CSV guardado en servidor

Notapor explorer » 2014-11-16 14:46 @657

Bienvenido a los foros de Perl en Español, andratec.

Me parece que has copiado mal el código, porque en la línea 9 estás usando la variable $file, pero esa variable la defines en la línea 11.

Si ejecutas el código con la opción -c, el propio Perl te lo dice:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ perl -c kk.pl
  2. CGI::Carp will be removed from the Perl core distribution in the next major release. Please install it from CPAN. It is being used at kk.pl, line 5.
  3. [Sun Nov 16 20:35:04 2014] CGI.pm: CGI will be removed from the Perl core distribution in the next major release. Please install it from CPAN. It is being used at kk.pl, line 6.
  4. [Sun Nov 16 20:35:04 2014] kk.pl: "my" variable $ruta masks earlier declaration in same scope at kk.pl line 9.
  5. Status: 500
  6. Content-type: text/html
  7.  
  8. <h1>Software error:</h1>
  9. <pre>Global symbol &quot;$file&quot; requires explicit package name at kk.pl line 9.
  10. Global symbol &quot;$file&quot; requires explicit package name at kk.pl line 9.
  11. kk.pl had compilation errors.
  12. </pre>
  13. <p>
  14. For help, please send mail to this site's webmaster, giving this error message
  15. and the time and date of the error.
  16.  
  17. </p>
  18. [Sun Nov 16 20:35:04 2014] kk.pl: Global symbol "$file" requires explicit package name at kk.pl line 9.
  19. [Sun Nov 16 20:35:04 2014] kk.pl: Global symbol "$file" requires explicit package name at kk.pl line 9.
  20. [Sun Nov 16 20:35:04 2014] kk.pl: kk.pl had compilation errors.
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Programar con copia/pega... tiene estos resultados.

Por estos foros hay más hilos que hablan de cómo leer archivos CSV con 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: Cómo leer un archivo CSV guardado en servidor

Notapor andratec » 2014-11-16 15:24 @683

Sí está mal, como dices. No fue precisamente copy/paste ya que lo he modificado al original.

¿Qué editor me recomiendas? Ya que hasta ahora solo estoy por consola y usando el vi... Pero quiero hacer un ambiente en Windows precisamente para poder ejecutar y ver errores como el que me mencionas tú...

¡¡Gracias!!
Última edición por explorer el 2014-11-16 19:38 @860, editado 1 vez en total
Razón: Si => Sí; esta => está; que => ¿Qué; admiraciones;
andratec
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-11-16 13:56 @622

Re: Cómo leer un archivo CSV guardado en servidor

Notapor explorer » 2014-11-16 19:48 @867

En Windows tienes el Notepad++, por ejemplo. Pero hay más opciones. Yo suelo usar joe, vim y Eclipse con e-p-i-c.

Pero si estás en un "entorno vi" eso quiere decir que estás en un UNIX/Linux, así que ya tienes el Perl instalado, por lo que puedes ejecutar inmediatamente -en otra consola o terminal-.

En Windows, debes instalarlo antes.
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: Cómo leer un archivo CSV guardado en servidor

Notapor Tizianatellez » 2014-11-17 05:17 @261

¡Muchas gracias por la ayuda!
Avatar de Usuario
Tizianatellez
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2014-10-31 04:01 @209
Ubicación: Burgo de Osma (Soria)

Re: Cómo leer un archivo CSV guardado en servidor

Notapor andratec » 2014-11-17 13:28 @603

¡Gracias por su ayuda!

Al ejecutar ya no me da errores, pero solo me está imprimiendo esto:

GLOB(0x7fab341ccbb0)

en vez de los campos del csv... ¿Alguna pista?

Perdón, quizás son errores muy básicos, pero llevo menos de una semana viendo Perl.

¡Gracias!
Última edición por explorer el 2014-11-17 13:30 @604, editado 1 vez en total
Razón: esta => está; interrogantes; quizas => quizás; admiraciones;
andratec
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-11-16 13:56 @622

Re: Cómo leer un archivo CSV guardado en servidor

Notapor explorer » 2014-11-17 13:33 @606

Sin ver el código, es difícil.

Si sale eso en pantalla, es porque se está imprimiendo un bareword (palabra simple), que podría ser un gestor de archivo. Es muy posible que en el print haya una coma demás.
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: Cómo leer un archivo CSV guardado en servidor

Notapor andratec » 2014-11-17 13:43 @613

Es casi similar al del principio... Aquí va:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub procesar_archivo {
  2.  
  3.     my $file = "/home/importados/csva2.csv";
  4.  
  5.     #$file = $ARGV[0] or die "Necesito un fichero CSV como parámetro\n";
  6.  
  7.     my $sum = 0;
  8.     open( my $data, '<', $file ) or die "No puedo abrir el fichero '$file' $!\n";
  9.  
  10.     while ( my $line = <$data> ) {
  11.         chomp $line;
  12.  
  13.         my @fields = split ",", $line;
  14.         $sum += $fields[3];
  15.     }
  16.     print "$sum";
  17. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ahora al imprimir la variable suma me da "0"... :/

La cabecera y la primera línea del csv es esta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. solicitud ,rut ,Nombre del Suscriptor ,indica quien tiene foto registrada,Correo,Codigo Visita,Status,Vigencia,Tipo,Fono,Rut Emp,Empresa,Dirección,Comuna,Obs Bco,Coord,Clave Confirmacion,Serial, Mandante
  2.  30315  (P :25xx3) , 1248xxxx1-2 ,Patricio Andrés Rojas Shaxxxxx,  ver foto de Patricio Andrés Rojas Sharovskyver pantallazo de Patricio Andrés xxxxx Shxxxxx, [email protected] ,,"Valid Ultimo Probar firma: fecha: 22/07/2014 16:34:58 ip: 200.10.236.226 ", 05/11/2013 - 07/11/2014,Avanzada,,,,,-,,,, 2xxxxxxxxxxxxxxxxxx112d9fb,OutSourcing
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2014-11-17 14:01 @625, editado 2 veces en total
Razón: Poner marcasde código Perl; linea => línea;
andratec
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-11-16 13:56 @622

Re: Cómo leer un archivo CSV guardado en servidor

Notapor explorer » 2014-11-17 14:03 @627

El cuarto campo no es numérico, ¿no? Dificílmente vas a poder sumarlos...
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: Cómo leer un archivo CSV guardado en servidor

Notapor andratec » 2014-11-17 14:08 @631

Hummm, entiendo, entonces para extraer por ejemplo el nombre del suscriptor y el correo, ¿cómo debería hacerlo, por el número de array? La idea es mostrarlo en una lista y enviar un mensaje a cada uno...

¡Gracias nuevamente por tu ayuda!
Última edición por explorer el 2014-11-17 14:11 @632, editado 1 vez en total
Razón: como => cómo; numero => número; admiraciones;
andratec
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-11-16 13:56 @622

Siguiente

Volver a Básico

¿Quién está conectado?

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