Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Very Basic Perl Question about IRC

by Tanktalus (Canon)
on Nov 06, 2012 at 01:48 UTC ( #1002409=note: print w/replies, xml ) Need Help??

in reply to Very Basic Perl Question about Sockets .. and IRC

There are a few approaches available here. The most obvious might be to use threads - one thread that would read from the socket (blocking), a second thread to write to the socket (blocks on the input queue used to feed it stuff to send), and a third to read from stdin (perhaps using Term::ReadLine). I'm not sure if that middle thread is quite needed, though it would handle race conditions between the first and last threads for sending stuff to the IRC server.

Personally, I do this basic type of thing with a single thread using event-based code, usually AnyEvent/Coro, though some will swear by POE. And, with a new enough Term::ReadLine, you can integrate it with Coro fairly well, or other event loops not quite so well, but still passably if done with Term::ReadLine being your main event loop (see Term::ReadLine::Event for example code), though there's always the issue of spitting stuff to the screen (input from IRC server) while waiting at a prompt.

That's for "this basic type of thing." For this specific type of thing (IRC), I use Xchat and perl plugins to Xchat.

Replies are listed 'Best First'.
Re^2: Very Basic Perl Question about IRC
by Contraversy (Initiate) on Nov 06, 2012 at 02:06 UTC
    Thank you so much, more than enough info here to do what I need!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002409]
[shmem]: I see that there is a plugin geany-plugin- codenav
[shmem]: maybe that supports ctags, check the documentation
[Lady_Aleena]: I'd have to talk to a geany person to see.
[Lady_Aleena]: Right now, I'm trying to decide whether I want to rewrite how variables are entered in the sub I'm working on.
[shmem]: wait, what? you want that person to read the documentation for you?
[Lady_Aleena]: I might have to go with options instead of a straight list.
[Discipulus]: if more than 3 go for named variables LA
[Lady_Aleena]: Discipulus, it is at 2 now, but with what I am thinking about, it could go to 3. However, only 1 is needed. The second and third are optional.
[shmem]: straight list or named parameters - that depends on whether (and how many) optional arguments you have
[Discipulus]: if so a plain list is ok, imho

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (13)
As of 2017-04-27 12:17 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (506 votes). Check out past polls.