in reply to XChat (IRC) XDCC script

Hi, I should say your script looks pretty good ;-). Sorry, I didn't have much time to _really_ study into it, but here's what I've found after a quick scan:

In your xqsend() subroutine, you have the following:
if ($_[0]) { my $user_index = $_[0]; $user = $xdccqueue[$user_index - 1]{user}; } else { $user = $xdccqueue[0]{user}; #IRC::print("$CX Checking for$CB $user$CX from queue... $CO\n"); }
First, you don't need to initialize the $user_index variable to simply store the value of the first subroutine argument, considering that the only place you use it is in the line immediately below its initialization.
Therefore, I'd propose to exchange your if/else block for this:
$user = $xdccqueue[(($_[0] || 1) - 1)]{user};
Or, better yet, just use this:
$user = $xdccqueue[$_[0]]{user};
since
(qw(foo bar))[$_[0]]
would still yield 'foo' when @_ is empty (therefore, $_[0] is undef).

"There is no system but GNU, and Linux is one of its kernels." -- Confession of Faith