use Spreadsheet::WriteExcel;
$file="file.xls"; #nome del file che vuoi creare
$workbook = Spreadsheet::WriteExcel->new($file);
$worksheet = $workbook->add_worksheet();

$format = $workbook->add_format();
$format->set_color('black'); #testo in colore nero
$format->set_align('right'); #testo allineato a destra

#ci sono molte altre possibilità, le puoi vedere dal modulo

$row=0; #riga 0
$col=0; #colonna 0 (corrsiponde alla colonna A)
$CAMPO="ciao"; #campo che vuoi inserire
$worksheet->write($row, $col, $CAMPO, $format);


$workbook->close();
exit;

In questo modo inserisci nel campo A0 la parola ciao.

Se il tuo file "file.txt" di testo è ad esempio così:
------------------
uno due tre
quattro cinque sei
sette otto nove
-------------------
(campi separati dal carattere tab)

fai:

use Spreadsheet::WriteExcel;
$file="file.xls"; #nome del file che vuoi creare
$workbook = Spreadsheet::WriteExcel->new($file);
$worksheet = $workbook->add_worksheet();

$format = $workbook->add_format();
$format->set_color('black'); #testo in colore nero
$format->set_align('right'); #testo allineato a destra

$row=0; #riga iniziale

open (TX,"file.txt"); #apro il file
while (<TX>) #leggo riga per riga
{
$col=0; #colonna iniziale
$_ =~ s/\n//; #tolgo il carattere di 'vai a capo'
@mom=split(/\t/,$_); #genero l'array dei campi sulla riga
foreach $mom(@mom) #leggo i singoli campi della riga
{
$CAMPO=$mom;
$worksheet->write($row, $col, $CAMPO, $format); #scrivo il dato
$col++; #incremento la colonna
}
$row++; #incremento la riga
}
close (TXT);
$workbook->close();
exit;


Se vuoi cambiare le caratteristiche della cella in base al campo, devi definire ogni volta $format