#! /usr/bin/perl use warnings; use strict; use Getopt::Long; use File::Basename; use XlsPerl; $|++; # no suffering from buffering my( $file, $perlCode ); my $worksheetNumber = 1; my $headline = 0; my $visible = 0; my $colSeparator = "\t"; GetOptions( 'file=s' => \$file, 'sheet=i' => \$worksheetNumber, 'headline=i' => \$headline, 'ane=s' => \$perlCode, 'visible' => \$visible, 'colseparator' => \$colSeparator, ) or die &PrintUsage(); my $xlsPerl = XlsPerl->new( excelFile => $file, worksheetNumber => $worksheetNumber, ) ->open; #if( $visible ) { $xlsPerl->excel->{Visible} = 1; #} # if # skip all lines until -headline if available $xlsPerl->currentRow( $headline ) if $headline; # TODO: the global @F is dirty... use a better way, e.g. with alias use vars qw(@F); while( $xlsPerl->getNextRow ) { my $R = $xlsPerl->currentRow(); local $_ = join($colSeparator, @F ) . "\n"; eval $perlCode; die $@ if $@; } # while # ------------------------------------------------------------ sub PrintUsage { my $bin = File::Basename::basename($0); die < =cut