Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi all, I'm a new perl user here. I'm just wondering if anyone could provide me some assistance on transferring files in directories using perl socket programming. Any trips and tricks or tutorials to guide me through. Any help is appreciated. thanks steve88

Replies are listed 'Best First'.
Re: Perl Socket Programming
by gryng (Hermit) on Sep 04, 2000 at 13:47 UTC
    I'm not sure of what you are asking? It sounds like you want to write a Perl script that interfaces with an ftp server, or that is an ftp server itself.

    If you are doing the former, there are modules that will let you do this painlessly.

    If you are doing the latter, I would suggest not. There are plenty of ftp servers out there, and there is no need to write one in Perl! (there probably already is one written in Perl!)

    However you may be asking to transfer data between programs (perhaps both in perl). If this is the case then you perhaps would like some socket programming. Look at the man pages (available here or as part of your copy of perl). They give excellent examples of how to use IO::Socket .

    As for tips or tricks with the latter method: If you are communicating to a remote machine, use INET sockets. If, instead, you are communicating to a local machine you can get a speed up by using UNIX sockets.

    Cheers,
    Gryn

    p.s. It would bring me peace of mind if you registered an account name here if you have further questions. I like to know who it is I'm talking to! :) :)

Re: Perl Socket Programming
by merlyn (Sage) on Sep 04, 2000 at 18:02 UTC
    Unless you really know what you are doing, the easiest bet is to use existing higher-level protocols instead of just "sockets". For example, 10-15 lines of code with HTTP::Daemon will get you a server waiting for a request, and another 5-10 lines of code will let you use HTTP::Request::Common to POST your file to be transferred, even passing some authentication to verify the source of the transmission. Using raw sockets, you'd be hard-pressed to even get the socket open in that few lines.

    -- Randal L. Schwartz, Perl hacker

Re: Perl Socket Programming
by Maclir (Curate) on Sep 05, 2000 at 01:08 UTC
    Chapter 17 of the "Perl Cookbook" (which should be part of every Perl monks' book shelf) has some good examples of socket programming. There are two main modules, the original (and lowest level) Socket, and a higher level IO::Socket. I think in most cases, IO::Socket will do everything people need, in a simple and easier to code manner.

    But as others have suggested, you may find even higher level modules provide what you want. I have used socket programming for simple tasks, and it works like a breeze - just find a suitable example in the cookbook, and adapt that. A word of caution though, your server program will often run with quite a high level of authority. You should also check out any potential security holes, make use of the "taint" facility, and in general, make sure the server does only what you instruct it to.

    Ken