Hi Dan,
Win32::OLE is not working for me. I'm using cygwin perl. ActiveState's perl might be better.
Both solutions below worked for me
A) have a look here:
http://www.cpan.org/authors/id/A/AN/...xls2csv-1.7.pl
B) this one works too:
#!/usr/bin/perl
use strict;
use Spreadsheet:

arseExcel:

imple;
my $filename = shift or die "Usage: xls2csv.pl file.xls\n";
$filename =~ /(.*)\.xls$/i or die "Invalid filename: $filename";
my $prefix = $1;
my $xls = Spreadsheet:

arseExcel:

imple->read($filename);
foreach my $sheet ($xls->sheets)
{
my $worksheet = $sheet->sheet;
my $sheetname = $worksheet->{Name};
open(CSV, ">$prefix-$sheetname.csv") or die "output file: $!";
while ($sheet->has_data)
{
my @row = $sheet->next_row;
print CSV join(';', @row), "\n";
}
close(CSV);
}
__END__
for both solutions, you need to get & install the modules
Spreadsheet:

arseExcel
Spreadsheet:

arseExcel:

imple
from cpan.org
these might have dependencies on other modules that need to be resolved
cheers
Ralph