Sab Oct 18, 2008 7:36 pm
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 246
Ubicación: Colombia
|
|
| Undefined subroutine &main::??? |
|
|
Tengo este mensaje:
| Código: |
Software error:
Undefined subroutine &main::fkread called at E:\O'Telch\Sitios web\bitacora\riocauca\panel.pl line 49. |
Mi módulo es FILE::kreader;
Cuando mi módulo lo llamo así:
| Perl: | #!/usr/bin/perl -w
use CGI:: Carp qw(fatalsToBrowser );
use CGI qw(:all );
use lib ('../modulos');
print header;
#use CGI::Session;
use HTML:: Template;
use Data:: Dumper;
use HTML:: CalendarMonth;
use FILE:: kreader; |
Y dentro de mi módulo tengo esto:
Y cuando comento la primera línea de mi módulo
| Perl: | #package FILE::kreader;
use strict;
require Exporter;
{ no strict;
@ISA = qw(Exporter );
@EXPORT_OK = qw(makefile swrite cfind fwrite fedit fkread kread );
} |
Obtengo esto:
| Código: |
Software error:
FILE/kreader.pm did not return a true value at E:\O'Telch\Sitios web\bitacora\riocauca\panel.pl line 13. |
Y para rematar, si importo desde mi código la función que tengo en mi módulo:
| Perl: | use FILE:: kreader qw(fkread ); |
Eso sí... le quito el comentario a package FILE::kreader; la primera línea de mi módulo y obtengo esto:
| Código: |
Software error:
Undefined subroutine &FILE::kreader::fkread called at E:\O'Telch\Sitios web\bitacora\riocauca\panel.pl line 49. |
Pero si comento la primera línea de mi módulo y llamo a mi módulo así:
| Perl: | use FILE:: kreader qw(fkread ); |
obtengo esto
| Código: |
Software error:
FILE/kreader.pm did not return a true value at E:\O'Telch\Sitios web\bitacora\riocauca\panel.pl line 13. |
La verdad no sé qué pasó si mi módulo ha funcionado super bien, solo agregué una nueva función llamada fkread, y tiene el número 1 al final mi módulo también. |
|
|
|

Sab Oct 18, 2008 8:52 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
Parece un fallo de sintaxis, quizás en alguna línea anterior a la definición de la subrutina.
usa strict, warnings y diagnostics, a ver si te cuentan algo más... |
|

Sab Oct 18, 2008 9:10 pm
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 246
Ubicación: Colombia
|
|
|
|
|
No, no me sale nada más y usé todo lo que me sugieres. Solo me sale
| Código: |
| Undefined subroutine &FILE::kreader::fkread called at E:\O'Telch\Sitios web\bitacora\riocauca\panel.pl line 49. |
y es todo. La subrutina está bien escrita... borré incluso todas las demás hasta dejar la subrutina vacía, es decir, sub fkread{};
Mejor dicho, esto es lo que tengo en mi módulo:
| Perl: | package FILE:: kreader;
use strict;
require Exporter;
{ no strict;
@ISA = qw(Exporter );
@EXPORT_OK = qw(makefile swrite cfind fwrite fedit fkread kread );
}
#########################################
#Kreader para Manipular ficheros y sus campos
#Autor Name: Daniel Mera
#Nick: 100% Telch
#Pais: Colombia
#Email: danimera@hotmail.com
#Version: 1
#########################################
sub fkread {
};
1; |
|
|

Sab Oct 18, 2008 9:15 pm
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 246
Ubicación: Colombia
|
|
|
|
|
Aveces obtengo esto cuando no lo exporto del módulo:
| Código: |
| "fkread" is not exported by the FILE::kreader module |
pero si lo exporto desde el módulo:
| Código: |
| Undefined subroutine &FILE::kreader::fkread called at |
|
|
Sab Oct 18, 2008 10:21 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
Con lo siguiente me funciona:
programa.pl:
| Perl: | #!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use kreader qw(fkread );
fkread (9); |
kreader.pm:
| Perl: | #!/usr/bin/perl
package kreader;
require Exporter;
use strict;
our @ISA = qw(Exporter );
our @EXPORT_OK = qw(fkread );
sub fkread {
print "@_\n";
};
1; |
Estoy casi convencido de que se trata de un error de sintaxis... |
|
Dom Oct 19, 2008 1:41 am
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 246
Ubicación: Colombia
|
|
|
|
|
| Sí... es un error de sintaxis aunque aun no veo dónde está... pero debe estar fuera del módulo; miraré a ver qué logro. |
|
Dom Oct 19, 2008 10:27 am
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 246
Ubicación: Colombia
|
|
|
|
|
AL FIN LO LOGRÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ
TODO LO MÍO ESTABA BIEN. EXPLORER... el problema fue que use el optiperl y al parecer cuando subía o guardaba los archivos me quedaron unos caracteres extraños que solo pude ver con un editor de texto en consola. Borré estos caracteres y creé un archivo nuevo, copié y pegué mi código fuente y listo. Jejeje, me funcionó bien ^^
GRACIAS POR TODO... AVECES NOS PASAN ESTAS COSAS. |
|
Dom Oct 19, 2008 10:54 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
| Sería interesante saber qué caracteres eran y si estaban en alguna determinada posición, por si alguien más usa ese programa y le pase lo mismo... |
|
Lun Oct 20, 2008 6:38 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
|
|
|
| Quizá el problema no era el editor, sino el programa FTP que estaba subiendo el archivo al servidor como Binario y no como ASCII. |
|
Jue Oct 23, 2008 11:56 am
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 246
Ubicación: Colombia
|
|
|
|
|
No... lo subía bien... lo que pasa es que cuando lo subía era que cambia la ruta del intérprete Perl... entonces ese era un problema. Ese archivo lo subía desde el mismo programa editor.
El otro eran unos caracteres muy extraños al inicio del archivo algo como: ╝♫╖ y todos los saltos de línea me los convertía en algo raro... esto en el Optiperl... Claro que es porque usé una versión crackeada y no de pago ^^ así que si tienen problemas similares mirar que el archivo no tenga caracteres extraños. |
|
Jue Oct 23, 2008 12:33 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
Suena a un preámbulo UTF-8 estricto junto con una transmisión ascii...  |
|
Vie Oct 24, 2008 11:10 pm
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 246
Ubicación: Colombia
|
|
| mmmm |
|
|
| ¿Eso qué significa, ha? ¿?¿? |
|

Sab Oct 25, 2008 7:59 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
|
|
|
|
|
Se trata de la Marca de orden de bytes (BOM, Byte Order Mark), que suele aparecer en algunos documentos codificados en UTF-8.
En cuanto a los finales de línea, quizás estés viendo los finales propios de Windows (\r\n) que son distintos de los de Unix/Linux (\n) y a su vez, distinto de los de Mac (\r).
Por eso solían ser útiles las transmisiones ascii con FTP, porque se encargaban de hacer esa transformación de los finales de línea.
Lo que pasa es que hoy en día, los ficheros de "texto" suelen tener caracteres codificados de muchas formas, por lo que pueden confundirse con los caracteres de final de línea. Por eso hoy se transmite todo en binario. Y por eso la mayoría de los editores de textos y programas tienen una opción para elegir los caracteres de final de línea.
Revisa la configuración de tu Optiperl, para que trabaje con la correspondiente a tu servidor, no a la del ordenador donde estás trabajando. |
|

Sab Oct 25, 2008 9:38 am
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 246
Ubicación: Colombia
|
|
|
|
|
| Huy, gracias por eso. Ahora ya entiendo, miraré la configuración de Optiperl ^^ |
|
Powered by phpBB © 2001, 2005 phpBB Group
|