Ya lo veo... pero... no sé muy bien qué pretendes: el new() no hace nada, mientras que lo dejas todo en manos de struct_user().
Si lo que quieres es crear una estructura que almacene datos de varios usuarios, entonces necesitas primero crear el objeto donde se van a almacenar. Y luego irles agregando con struct_user(). Por ejemplo:
Using perl Syntax Highlighting
package query;
sub new {
my $struct = {}; # almacén de información para todos los usuarios
bless $struct; # la bendecimos
return $struct; # y devolvemos
}
sub struct_user { # estructura para un único usuario
my $self = shift; # objeto con todo el almacén
# datos del usuario a guardar
my($id,$nick,$ip,$modos,$realname,$identd,$timestamp) = @_;
$self->{users}-> {$nick} = {
id => $id,
nickname => $nick,
ip => $ip,
modos => $modos,
realname => $realname,
identd => $identd,
timestamp => $timestamp
};
$self->{oldusers}->{$id} = {
nickname => $nick,
};
}
1;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
#!/usr/bin/perl
use query;
# defino un id cualquiera
my $id = "pepe1";
# inicio el objeto
my $dbq = new query();
$dbq->struct_user($id,"Er Pepe","127.0.0.1","absoluto","Jose Antonio",1,"Ahora");
use Data::Dumper;
print Dumper $dbq;
# cambio el valor
$dbq->{oldusers}->{$id}->{nickname} = "pepe";
# consulto el valor previo
print $dbq->{oldusers}->{$id}->{nickname}, "\n";
print Dumper $dbq;
#Otro usuario
$dbq->struct_user("juan","Er Juan","127.0.1.1","relativo","Juan Antonio",2,"Más tarde");
print Dumper $dbq;
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Ves que primero creamos el almacén, y luego con llamadas a struct_user vamos creando registros de usuarios.
El último print saca esto:
Using text Syntax Highlighting
$VAR1 = bless( {
'users' => {
'Er Juan' => {
'realname' => 'Juan Antonio',
'ip' => '127.0.1.1',
'modos' => 'relativo',
'nickname' => 'Er Juan',
'identd' => 2,
'id' => 'juan',
'timestamp' => 'Más tarde'
},
'Er Pepe' => {
'timestamp' => 'Ahora',
'id' => 'pepe1',
'identd' => 1,
'nickname' => 'Er Pepe',
'modos' => 'absoluto',
'ip' => '127.0.0.1',
'realname' => 'Jose Antonio'
}
},
'oldusers' => {
'juan' => {
'nickname' => 'Er Juan'
},
'pepe1' => {
'nickname' => 'pepe'
}
}
}, 'query' );
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
No sé si esta es la estructura de datos que quieres crear.