This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.
Subject: Perl vs Java From: dreamwvr <dreamwvr@dreamwvr.com> Date: Sun, 11 Jun 2000 09:37:14 -0600 hi, this could be a can of worms but anyhow here goes. Has anyone timed the actual efficiency of Perl vs Java? Reason being is i wrote a state engine as a perl module that seemed quite fast ~ 0.33 to 0.54 of a second for slurping up values. With recall being about .25 to .35 of a second which seemed quit fast to me. Then i was shown a jsp page which i really don't know much about.. reminded me actually of SSI syntax wise. Well it was doing the same thing using Java persistance objects and seemed very fast. Any idea how the languages compare as always trying to use the best tool for the job. TIA dreamwvr@dreamwvr.com === Subject: Re: Perl vs Java From: Matt Sergeant <matt@sergeant.org> Date: Sun, 11 Jun 2000 16:26:30 +0100 (BST) On Sun, 11 Jun 2000, dreamwvr wrote: > hi, > this could be a can of worms but anyhow here goes. Has anyone timed the > actual efficiency of Perl vs Java? Reason being is i wrote a state engine as > a perl module that seemed quite fast ~ 0.33 to 0.54 of a second for slurping > up values. With recall being about .25 to .35 of a second which seemed quit fast > to me. Then i was shown a jsp page which i really don't know much about.. > reminded me actually of SSI syntax wise. Well it was doing the same thing using > Java persistance objects and seemed very fast. Any idea how the languages > compare as always trying to use the best tool for the job. There are posts in the archive about this. Here's a quick summary: You can make Java slow. You can make mod_perl slow. Java (servlets, jsp, etc) can use a lot of memory. mod_perl can use a lot of memory. Servlets can be very fast. mod_perl can be very fast. I think that covers most of the arguments. === Subject: Re: Perl vs Java From: dreamwvr <dreamwvr@dreamwvr.com> Date: Sun, 11 Jun 2000 11:12:17 -0600 hi, thanks.. well i walked into that one;-)) anyways really was trying to see which was better from a web serving point of view.. in maintaining state between cgi pages.. since i have not done any real java proggies since the first year of jdk coming out i really was surprised how fast it was since my previous experience had been that java was very slow. yeah..yeah the args about scripting vs compiled to go on forever but just wanted to see which offered the best efficiency according to tests that had been made using basically the same i/o . TIA === Subject: Re: Perl vs Java From: Gerd Knops <gerti@bitart.com> Date: Sun, 11 Jun 2000 16:45:11 -0500 dreamwvr wrote: > hi, > this could be a can of worms but anyhow here goes. Has anyone timed > the actual efficiency of Perl vs Java? > > [cut] > I found this of some interest: Computer Languages compared http://wwwipd.ira.uka.de/%7Eprechelt/documents/jccpp_tr.pdf === Subject: Re: Perl vs Java From: dreamwvr <dreamwvr@dreamwvr.com> Date: Sun, 11 Jun 2000 17:36:09 -0600 hi Gerd, that was very much what i was looking for! hmm.. seems that perl is definately one of the most mem efficient langs whereas java is not. cool and definately great reading although "talk about detail!" this is good! Java has become acceptable for a compiled language. now here is a question i really am trying to understand. i really see java's greatest virtue of write once use anywhere being less sensational once perl becomes fully compiled lang. Well it will take some reading but definately is fascinating reading. Thanks! === Subject: Re: Perl vs Java [Now OT] From: Gerd Knops <gerti@bitart.com> Date: Sun, 11 Jun 2000 18:39:13 -0500 dreamwvr wrote: > hi Gerd, > that was very much what i was looking for! hmm.. seems that perl is > definately one of the most mem efficient langs whereas java is not. > cool and definately great reading although "talk about detail!" this > is good! Java has become acceptable for a compiled language. now here > is a question i really am trying to understand. i really see java's > greatest virtue of write once use anywhere being less sensational > once perl becomes fully compiled lang. Well it will take some reading > but definately is fascinating reading. Thanks! > [OT] My personal take: Where (at least for me) Java has it's niche is client side, for applets and applications. But for this, 'write once use anywhere' just isn't true. Look at Java1.3 (which you really want to use for GUI-intensive stuff, though their event/keyboard handling is really not well thought out): Available on Windows. Period. In a year it *might* be out for Linux, and in maybe 1.5 years for FreeBSD (native). Mac? Probably not (other than OSX). Server side it looks better, you don't need the GUI and so Java 1.1x is fine, and fairly available. But you can still write most things way faster in perl than in Java. And in my experience 'time to market' is way more importatnt than a program that 'looks cleaner' or maybe runs faster with less memory consumption. And it seems that speed/memory wise Java doesn't do any better than perl. One advantage Java might have over Perl is that in a team environment Java is easier to maintain. It is not that easy to goof up in Java as badd as you can in perl, and there is just 'less language' to confuse your fellow developer with. But again this comes with a development speed penalty. === Subject: Re: Perl vs Java [Now OT] From: Gunther Birznieks <gunther@extropia.com> Date: Sun, 11 Jun 2000 20:16:34 -0400 At 06:39 PM 6/11/00 -0500, Gerd Knops wrote: >dreamwvr wrote: > > hi Gerd, > > that was very much what i was looking for! hmm.. seems that perl is > > definately one of the most mem efficient langs whereas java is not. > > cool and definately great reading although "talk about detail!" this > > is good! Java has become acceptable for a compiled language. now here > > is a question i really am trying to understand. i really see java's > > greatest virtue of write once use anywhere being less sensational > > once perl becomes fully compiled lang. Well it will take some reading > > but definately is fascinating reading. Thanks! > > >[OT] >My personal take: >Where (at least for me) Java has it's niche is client side, for >applets and applications. But for this, 'write once use anywhere' just >isn't true. Look at Java1.3 (which you really want to use for >GUI-intensive stuff, though their event/keyboard handling is really not >well thought out): Available on Windows. Period. In a year it *might* >be out for Linux, and in maybe 1.5 years for FreeBSD (native). Mac? >Probably not (other than OSX). Yeah. Although applets can be useful for doing certain tricks such as providing real time pricing feeds to a web based trading engine using persistent HTTP streams. >Server side it looks better, you don't need the GUI and so Java 1.1x >is fine, and fairly available. But you can still write most things way >faster in perl than in Java. And in my experience 'time to market' is >way more importatnt than a program that 'looks cleaner' or maybe runs >faster with less memory consumption. And it seems that speed/memory >wise Java doesn't do any better than perl. I would disagree about speed/memory wise that Java does not do any better than Perl. I think algorithmically this is true, but there are some practicalities that would be REALLY interesting to benchmark. Here are a couple of things I would EXPECT would be much faster in Java than Perl if you benchmarked a program that made use of the following features: 1. Session management. Because servlets are multi-threaded they have easy, quick access to a shared memory pool. All the locking and shared persistence code used in Apache::Session is rendered moot by the shared memory Java model. 2. Would you write a chat engine in Perl? I wouldn't! (Well, actually I did 5 years ago but I am certainly not proud of that code). The thing about a real-time chat engine is the same issue as #1, it is really inefficient resource-wise to flush messages to a persistent data store or even using IPC shared memory in Perl in order to allow all the Perl processes to share a common list of chat messages even if only for the last 5 minutes worth of chat. Furthermore, if your chat engine supports an applet trick to keep an HTTP stream open consistently pulling messages out of the stream, then launching a separate Perl interpreter for each HTTP stream carries a lot of overhead that simply having another thread off to the side does not have. BTW, I would recommend the highest versions of JDK (stable) for server side java, as the higher JDKs do tend to be faster and tend to have more recent versions of libraries built for them (eg XML coding). >One advantage Java might have over Perl is that in a team environment >Java is easier to maintain. It is not that easy to goof up in Java as >badd as you can in perl, and there is just 'less language' to confuse >your fellow developer with. But again this comes with a development >speed penalty. I would agree with this. It does take longer to develop stuff in Java. The other thing is portability. In Perl, I can test everything I do on a $10 a month ISP and yet scale it to a mod_perl server later. Can't do that with Java servlets. Try finding a $10 a month ISP that supports servlets... Perl has a greater open source community because economic and technical boundaries do not exist for Perl that do exist for Java when writing web applications. === Subject: Re: Perl vs Java [Now OT] From: Perrin Harkins <perrin@primenet.com> Date: Sun, 11 Jun 2000 18:01:57 -0700 (PDT) On Sun, 11 Jun 2000, Gunther Birznieks wrote: > 1. Session management. Because servlets are multi-threaded they have easy, > quick access to a shared memory pool. All the locking and shared > persistence code used in Apache::Session is rendered moot by the shared > memory Java model. Unless you use a cluster of servers for load balancing and high availability, in which case you're right back where you started and you need the Java equivalent of Apache::Session::DBI. I imagine someone has written one in one of the many servlet runners out there. - Perrin === Subject: Re: Perl vs Java [Now OT] From: dreamwvr <dreamwvr@dreamwvr.com> Date: Sun, 11 Jun 2000 20:24:14 -0600 Perrin wrote: > Unless you use a cluster of servers for load balancing and high > availability, in which case you're right back where you started and you > need the Java equivalent of Apache::Session::DBI. I imagine someone has > written one in one of the many servlet runners out there. this has been great! although my thoughts were that DB_File is way faster than anything there is in java as a state engine.. but then again i could be wrong.. been there done that! === Subject: Re: Perl vs Java From: shane@isupportlive.com Date: Sun, 11 Jun 2000 23:55:28 +0000 On Sun, Jun 11, 2000 at 09:37:14AM -0600, dreamwvr wrote: > this could be a can of worms but anyhow here goes. Has > anyone timed the actual efficiency of Perl vs Java? Reason > being is i wrote a state engine as a perl module that > seemed quite fast ~ 0.33 to 0.54 of a second for slurping > up values. With recall being about .25 to .35 of a second > which seemed quit fast to me. Then i was shown a jsp page > which i really don't know much about.. reminded me > actually of SSI syntax wise. Well it was doing the same > thing using Java persistance objects and seemed very > fast. Any idea how the languages compare as always trying > to use the best tool for the job. Well, I'll just drop my $.02 into this discussion. I've done a lot of both. The site from which this email is coming from (isupportlive.com) is developed in java technology start to finish. Everything is either a .jsp, or straight servlet. I've also developed a lot of other sites using modperl, and cgi's. (Cgi's a few years ago, but everything for the last couple years has been modperl) Also for the isupportlive site there are java applications, and java applets that use the servlets as their inter-communication method. So given that information, I'll give you the run down on how I feel about it. After spending 6 months developing all that stuff, I think it would have been wise to have the entire backend done in C or perl instead. I've done bench marks on both, and Java is a huge memory hog, and not too much in the way of stable. Speed wise, a perl solution would have been better, but really for what I was doing C is the only way to go, or maybe threaded perl when modperl2 comes out. There's a lot of cool stuff "built in" to servlet technology that's not immediatly obvious in perl technology. But with stuff like Embperl, Apache::ASP, and Mason, it sort of levels the playing field. The worst thing about Java though for me is that the community isn't as "giving". The perl community is built on a very open tradition, and the language itself is more extendable with native plugins. (I.e. you can build something in C in XS, and have it run non interpretted) So the MOST important thing about perl is, well..., basically you guys!, the perl community. Java doesn't have that. Native languages have it, but not as organized as CPAN, etc. Java doesn't have it... not at all. People are not nearly as open with their class files as people are with their .pm's. Honestly though..., I love the java language. But the best thing about java has nothing to do with Servlets. It has everything to do with the GUI class layout. The inheritence there is pure beauty. Have you every tried to use String tokens in java and run a benchmark on it and compared it to a regex? PATHETIC. String handling is crap in Java. The explanations I've heard are overhead for creating string objects for each token seperator. Oh well, those are my disorganized thoughts :-) === Subject: Re: Perl vs Java [Now OT] > From: shane@isupportlive.com > Date: Mon, 12 Jun 2000 00:09:07 +0000 > WAY OT at this point :) > [OT] > My personal take: > Where (at least for me) Java has it's niche is client side, for > applets and applications. But for this, 'write once use anywhere' just > isn't true. Look at Java1.3 (which you really want to use for > GUI-intensive stuff, though their event/keyboard handling is really not > well thought out): Available on Windows. Period. In a year it *might* > be out for Linux, and in maybe 1.5 years for FreeBSD (native). Mac? > Probably not (other than OSX). This is true, I haven't looked at 1.3's event handling, but honestly what would you prefer? A single event loop? Come on.., the 1.1+ event strategy was 100x better than 1.0.2. 1.0's event handling was crap, and that's what most event loops are designed like. This was one area where I felt java technology was really far ahead. (ActionListeners are key) > Server side it looks better, you don't need the GUI and so Java 1.1x > is fine, and fairly available. But you can still write most things way > faster in perl than in Java. And in my experience 'time to market' is > way more importatnt than a program that 'looks cleaner' or maybe runs > faster with less memory consumption. And it seems that speed/memory > wise Java doesn't do any better than perl. Hmm., well..., here's my gripe with this. Server side perl is a really fast developement tool. GUI side java is a really fast developement tool. Why would you take a language that was clearly designed for GUI developement, that all it's strengths lie with GUI, and try to make it a server language?..., it's preposterous. It doesn't even have REGEX's natively..., what the hell is that!?!?! (Note: there is a really good regex library that's mostly free for java, not nearly as fast as perl native) > One advantage Java might have over Perl is that in a team environment > Java is easier to maintain. It is not that easy to goof up in Java as > badd as you can in perl, and there is just 'less language' to confuse > your fellow developer with. But again this comes with a development > speed penalty. Hehe, the funny thing is that Java is actually a huge language. I mean HUGE. But 95% of it is GUI. So if the language designers are put 95% into the GUI... well, that speaks volumes to me. String handling sucks, and GUI handling is good. If String handling isn't good..., was it designed for pushing strings to webbrowsers? Java is pretty easy to maintain, but proper perl modules are also easy to maintain. But what I see in the field is people not spending a lot of time to make good modules. Instead they're pushing projects out fast, which is easy to do. Perl doesn't put any restrictions on the developer, they are free to do things however they like. So you can have beautiful class/module hierarchies in Perl, and you can have a bunch of flat files that are impossible to make any mods to. In Java everything MUST be a class. So it forces you to design things right. But the underlying problem is what's right for one thing isn't right for others. So Perl becomes sort of a "tool for any job", Java becomes a tool only for a long term project. (Overhead to start) === Subject: Re: Perl vs Java [Now OT] > From: Gunther Birznieks <gunther@extropia.com> > Date: Mon, 12 Jun 2000 21:35:22 +0800 > At 06:01 PM 6/11/00 -0700, Perrin Harkins wrote: >On Sun, 11 Jun 2000, Gunther Birznieks wrote: > > 1. Session management. Because servlets are multi-threaded they have easy, > > quick access to a shared memory pool. All the locking and shared > > persistence code used in Apache::Session is rendered moot by the shared > > memory Java model. > >Unless you use a cluster of servers for load balancing and high >availability, in which case you're right back where you started and you >need the Java equivalent of Apache::Session::DBI. I imagine someone has >written one in one of the many servlet runners out there. > >- Perrin 1) Many load balancers actually recognize this and do provide some load balancing on IP address. This is definately not perfect of course (when you have ISP proxies like AOL)... and then when a machine goes down, it's just tough luck that the user has to get redirected and relogin or do whatever for the session. 2) On the flip side of that, Java has commercial products that handle this type of shared persistence -- one that comes to mind is Gemstone. Even so, there are a lot of things about Java that make creating a session persistence engine "easier". For example, you could easily have a middleware java session persistence engine which is actually keeping all of the stuff in RAM, but then running a low-level thread to write stuff out to a database as it changes. Plus keeping a socket open to each servlet engine that it wants to let know a change in the real session made. It's very very difficult to do the same type of architectures in Perl that you can do with Java precisely because Perl is not a multi-threaded language and never will be as robust in that area -- even if Perl becomes robust in this area, the modules will have to be written to support this as well. Anyway, all languages have their advantages and disadvantages, but in cases such as session handling, Java Servlets wins out big time. Apache::Session is awesome for Perl, But take a look at all the hoops that Jeffrey has to go through to maintain it and the code inside. It's a tough piece of code because it is a matter of sharing a persistent session data amongst a whole bunch of processes that don't know anything about anyone else. And even then. Programmers of Apache::Session still have to remember to do stuff like manually set a timestamp or flush out the session data to disk if a reference to a reference in a swizzled data structure is changed becuase there is no way for the TIE interface to recognize it. These complexities are simply non-issues in Java Servlets because of the in-memory aspect. Anyway, I am not saying it is bad, Apache::Session is great! But it's definately hampered by Perl's architecture. === Subject: Re: perl vs java > From: Roger Espel Llima <espel@iagora.net> > Date: Mon, 12 Jun 2000 19:23:03 +0200 > Gunther Birznieks <gunther@extropia.com> wrote: > 2. Would you write a chat engine in Perl? I wouldn't! (Well, actually I did > 5 years ago but I am certainly not proud of that code). I did, just a few months ago, and it's working very nicely. > The thing about a real-time chat engine is the same issue as #1, it is > really inefficient resource-wise to flush messages to a persistent data > store or even using IPC shared memory in Perl in order to allow all the > Perl processes to share a common list of chat messages even if only for the > last 5 minutes worth of chat. So don't do it like that :) My chat engine is a single-threaded, select()-based plain Perl daemon (no apache there) that takes http connections on a non-standard port, directly from the browser, and keeps them open for as long as the browser will. It speaks http on one end, and uses the irc-server-to-server protocol to talk to an ircd on the other. Technically, yeah, select() is arguably ugly, but if you wrap it around OO classes for the various kinds of buffers and connections, it's all quite manageable. Chat connections are very low bandwith, and a single-threaded design tends to be memory effective, so I'd expect this setup to handle a few hundred simultaneous users easily. If you want more, use a standard irc daemon as a hub, and connect several such perl servers to it; if you want to have a java applet client too, it can talk directly to the irc server. === Subject: Re: Perl vs Java [Now OT] > From: Perrin Harkins <perrin@primenet.com> > Date: Mon, 12 Jun 2000 15:28:42 -0700 (PDT) > On Mon, 12 Jun 2000, Gunther Birznieks wrote: > >Unless you use a cluster of servers for load balancing and high > >availability, in which case you're right back where you started and you > >need the Java equivalent of Apache::Session::DBI. I imagine someone has > >written one in one of the many servlet runners out there. > > 1) Many load balancers actually recognize this and do provide some load > balancing on IP address. This is definately not perfect of course (when you > have ISP proxies like AOL)... and then when a machine goes down, it's just > tough luck that the user has to get redirected and relogin or do whatever > for the session. It's that second part that is a problem for me. We do a write-through cache to deal with this, i.e. we write all data to both a local cache (shared memory, courtesy of BerkeleyDB 3) and a shared database. Reads check the cache first, and don't bother to go to the database unless what they want isn't cached. If a machine fails, we only lose the cache. I know some of the commercial java stuff does the same thing and provides a nice API for using it. Threading certainly does have its allure, and I agree that Apache::Session is neat and that Perl's TIE mechanism is inadequate for the job. === Subject: Re: perl vs java > From: Shane Nay <shane@isupportlive.com> > Date: Mon, 12 Jun 2000 18:21:05 +0000 > Somehow I missed Gunther's message, maybe I had a system out for a little while, I'm replying to Roger, but really replying to Gunther) On Mon, 12 Jun 2000, you wrote: > Gunther Birznieks <gunther@extropia.com> wrote: > > 2. Would you write a chat engine in Perl? I wouldn't! (Well, actually I did > > 5 years ago but I am certainly not proud of that code). Hmm..., yes I would. At this point, long before I would write it in Java. You know why? Not because of anything in perl necessarily, but actually what you can do with perl. You see, a perl XS module can take advantage of anything inside of C. If I were to write a new version of the chat engine I wrote, I wouldn't do it this way. In fact I started re-writing it based on a sigqueues, and CORBA. Corba pre-fetch of everything running around, dump into memory, sigqueues pick up request from client via httpd protocol (obviously not port 80, this is a special purpose HTTPD engine). Stream out based on pre-fetched CORBA content. I started writing it, but got distracted by the fact that I ran out of money :-), happens to the best of us. Java can talk to Corba natively, so the application side talks to the corba server, and dumps/retrieves it's messages into there. Two threads involved in the special purpose httpd engine. One that fetches content from the CORBA engine, the other that streams out to clients based on sigqueus (Similar to phhttpd, but much simpler). The locking issues on the Corba content is so yucky I don't even want to discuss it (That's sort of where I left off). I ran some benchmarks, and the httpd engine could handle over 1000 requests per second per server. The corba fetch was really trivial, so the only "problem" was the communication between the applications and omniORB (Corba Object Request Broker, really good piece of software BTW, best ORB out there in terms of speed) > > I did, just a few months ago, and it's working very nicely. > > > The thing about a real-time chat engine is the same issue as #1, it is > > really inefficient resource-wise to flush messages to a persistent data > > store or even using IPC shared memory in Perl in order to allow all the > > Perl processes to share a common list of chat messages even if only for the > > last 5 minutes worth of chat. > > So don't do it like that :) My chat engine is a single-threaded, > select()-based plain Perl daemon (no apache there) that takes http > connections on a non-standard port, directly from the browser, and keeps > them open for as long as the browser will. It speaks http on one end, > and uses the irc-server-to-server protocol to talk to an ircd on the > other. Well, yes that's the easiest way to do it with perl. The other way is to write some XS modules which plug into an sigqueue engine, and handle it that way. Honestly though, if you're going to be writing XS modules to talk to signal queues, you might as well write the damn thing in c :-). > Technically, yeah, select() is arguably ugly, but if you wrap it around > OO classes for the various kinds of buffers and connections, it's all > quite manageable. Select might be ugly, but it's how nearly every realtime system works. So if you want a realtime system you need to look into select, poll (ugh), and sigqueues. > Chat connections are very low bandwith, and a single-threaded design > tends to be memory effective, so I'd expect this setup to handle a few > hundred simultaneous users easily. If you want more, use a standard irc > daemon as a hub, and connect several such perl servers to it; if you > want to have a java applet client too, it can talk directly to the irc > server. Nothing could be more true. Single thread is the ONLY way to go..., anything other than that is a massive waste of trying to implement. Thanks, Shane. === Subject: Re: perl vs java > From: Gunther Birznieks <gunther@extropia.com> > Date: Tue, 13 Jun 2000 11:41:29 +0800 > Now, now...that is unfair. I was referring to writing in pure Perl vs pure Java. Of course, C apis and pre-written daemon integration makes the glue language a moot point (and favors Perl actually). BTW, is select() is still broken in Win32 Perl? It was 6 months ago (I suspect because IO operates differently on win32) so you'd limit your platform too. === Subject: Re: perl vs java > From: Perrin Harkins <perrin@primenet.com> > Date: Mon, 12 Jun 2000 21:40:26 -0700 (PDT) > On Mon, 12 Jun 2000, Shane Nay wrote: > If I were to write a new version of the chat engine I wrote, I > wouldn't do it this way. In fact I started re-writing it based on a > sigqueues, and CORBA. Shane, you are a maniac! You wrote a chat server using sigqueues and CORBA? Isn't that like killing a mosquito with an atomic bomb? === Subject: Re: perl vs java > From: Shane Nay <shane@isupportlive.com> > Date: Tue, 13 Jun 2000 01:05:27 +0000 > On Tue, 13 Jun 2000, you wrote: > Now, now...that is unfair. I was referring to writing in pure Perl vs pure > Java. Admittedly it's not completely fair :-). I admitted that I would do (have done) it in c. Given a choice between C and perl that is. But as you say in the next paragraph, Perl is clearly a better choice than java on this. (Although if you're only supporting JDK1.1x and later, the ability to pass java objects over HTTP is really cool, and I used it extensively) > > Of course, C apis and pre-written daemon integration makes the glue > language a moot point (and favors Perl actually). > > BTW, is select() is still broken in Win32 Perl? It was 6 months ago (I > suspect because IO operates differently on win32) so you'd limit your > platform too. Honestly I don't know much about the Win32 platform. Until I had to use VMWare to look at a prototype for a product I was helping out with I hadn't used Windows in about 2 years. (BTW: Huge plug for VMWare, that's some REALLY cool software, not just for runing windows on linux, but testing other OSes... I can't say enough good stuff about vmware) === Subject: Re: perl vs java > From: Roger Espel Llima <espel@iagora.net> > Date: Tue, 13 Jun 2000 17:49:45 +0200 > Now, now...that is unfair. I was referring to writing in pure Perl vs pure > Java. > > Of course, C apis and pre-written daemon integration makes the glue > language a moot point (and favors Perl actually). Well, mine is pure perl. it can speak the protocol to integrate with a pre-written C irc daemon, but you don't *have* to use it with one. > BTW, is select() is still broken in Win32 Perl? It was 6 months ago (I > suspect because IO operates differently on win32) so you'd limit your > platform too. Last I heard, perl's select() under win32 worked for sockets, but not for pipes or ttys. Anyway, limiting myself to platforms where select() works doesn't strike me as a bad thing... ===