Página 1 de 2

Undefined subroutine &main::???

NotaPublicado: 2008-10-18 20:36 @900
por danimera
Tengo este mensaje:

Código: Seleccionar todo
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í:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/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;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y dentro de mi módulo tengo esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
package FILE::kreader;

use strict;

require Exporter;


{   no strict;

   @ISA = qw(Exporter);
   @EXPORT_OK = qw(makefile swrite cfind fwrite fedit fkread kread);

}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y cuando comento la primera línea de mi módulo

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#package FILE::kreader;

use strict;

require Exporter;


{   no strict;

   @ISA = qw(Exporter);
   @EXPORT_OK = qw(makefile swrite cfind fwrite fedit fkread kread);

}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Obtengo esto:

Código: Seleccionar todo
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:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use FILE::kreader qw(fkread);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Eso sí... le quito el comentario a package FILE::kreader; la primera línea de mi módulo y obtengo esto:

Código: Seleccionar todo
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í:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use FILE::kreader qw(fkread);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


obtengo esto

Código: Seleccionar todo
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.

NotaPublicado: 2008-10-18 21:52 @952
por explorer
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...

NotaPublicado: 2008-10-18 22:10 @965
por danimera
No, no me sale nada más y usé todo lo que me sugieres. Solo me sale

Código: Seleccionar todo
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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
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: [email protected]
#Version: 1

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

sub fkread{
};

1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2008-10-18 22:15 @968
por danimera
Aveces obtengo esto cuando no lo exporto del módulo:

Código: Seleccionar todo
 "fkread" is not exported by the FILE::kreader module


pero si lo exporto desde el módulo:

Código: Seleccionar todo
Undefined subroutine &FILE::kreader::fkread called at

NotaPublicado: 2008-10-18 23:21 @015
por explorer
Con lo siguiente me funciona:

programa.pl:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

use kreader qw(fkread);

fkread(9);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

kreader.pm:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

package kreader;

require Exporter;

use strict;

our @ISA       = qw(Exporter);
our @EXPORT_OK = qw(fkread);

sub fkread{
    print "@_\n";
};

1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Estoy casi convencido de que se trata de un error de sintaxis...

NotaPublicado: 2008-10-19 02:41 @153
por danimera
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.

NotaPublicado: 2008-10-19 11:27 @519
por danimera
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.

NotaPublicado: 2008-10-19 11:54 @537
por explorer
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...

NotaPublicado: 2008-10-20 07:38 @360
por kidd
Quizá el problema no era el editor, sino el programa FTP que estaba subiendo el archivo al servidor como Binario y no como ASCII.

NotaPublicado: 2008-10-23 12:56 @580
por danimera
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.