provided some good answers
but since I also use cygwin
every day, I'll add some input as well.
What problems have people found with Cygwin Perl?
Very few problems -- it works very well. The only problem I found was an obscure bug that showed up in cygwin perl 5.6.1 but not any other perl I tried. It had to do with $^S getting set incorrectly after an eval block. I filed a bug report
and was told that this would be fixed in perl 5.8. Other than that, I've had no problems.
How fast is Cygwin Perl compared with AS Perl?
I do process some very large (several hundred MB+) files and I do see a noticeable slowdown on cygwin apps (this affects all cygwin apps, not just perl). It can be as much as 40% slowdown but usually is closer to 10-20%. If you have a fast machine and aren't doing any really huge processing, you probably won't even notice. Because cygwin adds a layer between your application and the OS, there is some overhead due to translating calls from unix to windows and vice versa.
How much of CPAN works okay?
I've had pretty good luck with almost everything. As broquaint
also mentioned, I was not able to get some of the XML stuff working. After a fair amount of fiddling, I did get enough functionality in place to let me work. That was quite a while ago so I don't know what's changed since then and I don't recall what I had to fiddle with. Since cygwin comes with a good C compiler, it can easily compile and install most CPAN modules.
For people who have used both, which do you prefer, and why?
I prefer the cygwin perl. Mainly because I spend most of my time in a cygwin shell so it's handy to use a perl that also thinks it's in unix (and understands cygwin paths, etc.) Also, as broquaint
-- it's really nice to be able to use cpan to install modules and not have to rely on someone building a PPM file.
What functionality does AS Perl have that Cygwin Perl does not?
The only thing that I can think of is that you need AS to use any windows specific (e.g. Win32:: ) modules. For example, I use AS a lot to use the Win32::OLE
module. To make it easier to integrate AS and cygwin, I created an alias in my bash shell called "winperl" that points to AS perl. That way I can call AS perl easily from cygwin. I also put this into my shebang line on scripts that need AS perl: "#!/cygdrive/c/Perl/bin/perl.exe -w" that way they are executed transparently by cygwin.