Hmm, without knowing more about your DSL setup, it is hard to say
anything definite. As a data point, I wrote a perl program
running on Linux 2.4 that skims Usenet (NNTP protocol) and
easily saturates my DSL data pipe at 160KB/sec. The best I
have ever done on Windows 98 using proprietary programs
on the same machine is 140KB/sec for any protocol.
The perl code involved no special tricks.
So from personal experience, I think it it is unlikely
that perl's socket interface is much worse than the
Windows implementation.
One possible difference is that you and he have different
upload capacities in your DSL setups - they can easily vary
by two orders of magnitude, depending on what you pay for.
Also, your friend seems to have an upload capacity of 2 MByte/sec
which translates to 20Mbits/sec, for which a 10baseT Ethernet
connection would be a bottleneck.
But if your perl code is still suspect after checking out that
both your hardware setups are of similar speed, post the
relevant portions of your code here so that we can comment
on them.
-Mark