Redirecting output on win32 from a script called by just its name is broken, see the release notes.
C:\temp>cat foo.pl
#!/usr/bin/perl -l
use strict;
use warnings;
print 'Foo';
__END__
C:\temp>foo
Foo
C:\temp>foo >foo.txt
C:\temp>cat foo.txt
Foo
use pl2bat, shipped with activestate perl. This will wrap your perl-script in a .bat-file, from which redirecting will work;
OTOH I'm new on cmd.exe, I've been on command.com (when using Windows) till just about one month ago, and there I had to use pl2bat, with which for some reason redirecting did not work. Which was a major pita and caused me to implement -i, -o switches for some of my commonly used scripts.