• Publicidad

mIRC scripting a Perl

¿Estás desarrollando un proyecto, o piensas hacerlo? Pon aquí tu propuesta, lo más seguro es que alguien esté interesado en ayudarte.

mIRC scripting a Perl

Notapor maguiTO » 2011-06-05 18:13 @800

Hola, soy programador de scripts para mIRC. Tengo un robot de trivias hecho a mi gusto y antojo. Mi idea es traducir el código a Perl. Necesitaría algo de ayuda. Claro que no espero que me lo hagan; sino, no entendería nunca el funcionamiento. Quiero aprender algo de Perl mientras hago mi proyecto. ¿Estoy en el lugar correcto?

Desde ya muchas gracias.
maguiTO
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-06-05 18:09 @798

Publicidad

Re: mIRC scripting a Perl

Notapor explorer » 2011-06-05 18:23 @807

Bienvenido a los foros de Perl en español, maguiTO.

Este es el lugar correcto si necesitas ayuda para tu proyecto.

Si quieres aprender Perl, comienza por Por dónde empezar.

También hay algunos hilos al respecto del IRC. Usa el sistema de búsqueda.
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: mIRC scripting a Perl

Notapor maguiTO » 2011-06-05 18:39 @818

Gracias por la bienvenida explorer, estoy leyendo un poco y tengo una duda con un ejemplo...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @array = ('Perro','Gato','Gallina','Pez');
  2.  
  3. my $animal = $array[3];
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

¿Por qué la variable es Pez y no Gallina?
maguiTO
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-06-05 18:09 @798

Re: mIRC scripting a Perl

Notapor explorer » 2011-06-05 18:46 @823

Porque los arrays se basan en índice 0. Entonces [3] se refiere al cuarto elemento.

Más información en perldoc perldata.

Estas dudas sobre Perl, es mejor hacerlas en el foro Básico.
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

Suguiente paso [Bot irc]

Notapor maguiTO » 2011-06-08 13:48 @617

Investigando un poco bastante y leyendo logré conectar el bot al IRC
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Net::IRC;
  2.  
  3. $server = 'irc.Servi.dor';
  4. $chan = '#Canal';
  5. $nick = 'ApodoBOT';
  6. $user = 'id';
  7. $realname = 'Proyecto: Bot en perl';
  8.  
  9. $irc = new Net::IRC;
  10.  
  11. $conn = $irc->newconn(Nick => $nick, Server => $server, Port => 6667, Username => $user, Ircname => $realname);
  12.  
  13. $conn->add_handler('376', \&on_connect);
  14.  
  15. sub on_connect {
  16.   my $self = shift;
  17.   $self->join($chan);
  18. }
  19.  
  20. $irc->start;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Ahora necesitaría saber si hay algún tipo de temporizador que deba estudiar. En scripting está /timer <repetición> [tiempo] <comando>

Les doy un ejemplo de lo que quiero lograr:

Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. alias ejemplo {
  2.   timer  1 10 alias_1
  3.   timer  1 20 alias_2
  4.   timer  1 30 alias_3
  5. }
  6.  
  7. alias alias_1 { msg $chan Este es el primer timer que se activo a los 10 segundos de ejecutar "ejemplo" }
  8. alias alias_2 { msg $chan Segundo timer a los 20 segundos }
  9. alias alias_3 { msg $chan Tercer y ultima acción que seria a los 30 }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

No soy muy bueno expresándome. Ténganme paciencia XD
maguiTO
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2011-06-05 18:09 @798

Re: mIRC scripting a Perl

Notapor explorer » 2011-06-08 14:06 @629

En Perl no es directo la creación de temporizadores.

Hay infraestructuras, como la de POE, por ejemplo, que permite un uso asíncrono del código, y con algunas posibilidades de crear esos temporizadores.

Otra forma, un poco más burda, sería que el programa generara un hijo por medio de un fork(), y que esté hijo lo único que hiciera fuera esperar (sleep) un cierto tiempo, sacar el mensaje al canal, y luego morir.

Estoy casi convencido que los módulos especializados en IRC, en el CPAN, tienen mejores formas de hacer esto.

Por ejemplo, el módulo Bot::BasicBot tiene la función schedule_tick(), que llamará a la función tick() pasado el tiempo indicado. Lo malo es que solo se puede indicar un periodo de tiempo.

También tiene la función forkit(), para hacer lo comentado 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


Volver a Proyectos

¿Quién está conectado?

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

cron