• Publicidad

FileHandle

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

FileHandle

Notapor davidlo » 2007-01-25 04:28 @227

¿Es posible obtener el nombre de un fichero de su manipulador?

Es decir, si tengo una clase cuyo constructor es tal que así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub new {
   
    my $clase = shift;

    my $self ={};

    my $fh = FileHandle->new();

# Abrimos el fichero
    if (!($fh->open("+>./datos/datos_1234.dat"))){
      print("Fallo al crear el fichero de contactos\n");
        $fh=undef;
    }else{
        print "DEBUG: fichero abierto con éxito\n";
        $fh->autoflush(1);
    }

#   Creamos la estructura del objeto
    $self->{manipulador}=$fh;
   
    bless($self, $clase);

    return $self;
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


¿Cómo puede otro método de la clase obtener el nombre del fichero 'datos_1234.dat'?
davidlo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2006-11-11 05:58 @290
Ubicación: Sevilla, España

Publicidad

Notapor explorer » 2007-01-25 05:01 @251

Complicado.

No es portable.

Aquí tienes una solución si estás en Unix.
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

Notapor davidlo » 2007-01-25 05:23 @266

Lo que quiero hacer es pasarle ese fichero al parser XML::Simple en uno de esos métodos. ¿Puede hacerse contando sólo con el manipulador?
davidlo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2006-11-11 05:58 @290
Ubicación: Sevilla, España

Notapor explorer » 2007-01-25 06:32 @314

Le puedes pasar un objeto IO::File, que es casi lo mismo. En el manual de XML::Simple está el ejemplo, en XMLin().
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

Notapor davidlo » 2007-01-25 06:42 @321

Haciéndolo con cualquiera de los dos, me da el siguiente fallo:
Código: Seleccionar todo

Empty Stream at /usr/lib/perl5/XML/LibXML.pm line 473.
 at /usr/lib/perl5/XML/LibXML/SAX.pm line 64
 at /usr/share/perl5/XML/Simple.pm line 291
davidlo
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2006-11-11 05:58 @290
Ubicación: Sevilla, España

Notapor explorer » 2007-01-25 07:47 @366

¿No puedes poner el trozo de código que estás usando?

¿Has creado el objeto IO::File?

A mí me funciona lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l

use Data::Dumper;
use IO::File;
use XML::Simple;

my $fh = new IO::File('kk.xml');

my $xml = XMLin($fh);

print Dumper \$xml;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Código: Seleccionar todo
$VAR1 = \{
            'task' => {
                        't3' => {},
                        't0' => {},
                        't2' => {},
                        't1' => {
                                  'events' => {
                                                'event' => {}
                                              }
                                }
                      }
          };
desde un
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<tasks>
    <task id="t0"/>
    <task id="t1">
         <events>
        <event></event>
      </events>
        </task>
    <task id="t2" />
    <task id="t3" ></task>
</tasks>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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

Notapor explorer » 2007-01-25 08:25 @392

"Empty Stream" puede significar que el fichero se encuentra vacío... no sé...
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


Volver a Básico

¿Quién está conectado?

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