define, like
constant, is used at compile-time; hence, it has to be declared before any run. In this case, it really doesn't need to be used, but I used it to for debugging. The result
might surprise you.
#!/usr/bin/perl
use Modern::Perl '2012';
use strictures 1;
no strict 'refs';
use Spreadsheet::ParseExcel;
use Devel::SimpleTrace 'showrefs';
use define DEBUG => 1;
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse('tags sample.xls');
my $page = $workbook->{Worksheet}[0];
my ( $tags, $pages, $pviews, $pvisits );
format STDOUT_TOP =
Tags Pages Page Views Page Visits
.
format STDOUT =
@<<<<<<>>>>>>>>> @ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$tags, $pages, $pviews, $pvisits
.
my %i;
foreach ( my $i = 0 ; $i{'MaxRow'} ; ++$i ) {
$tags = cell( $page, $i, 0 );
$pages = cell( $page, $i, 1 );
$pviews = cell( $page, $i, 2 );
$pvisits = cell( $page, $i, 3 );
write;
}
cell(DEBUG);
sub cell {
my ( $Wks, $r, $c ) = @_;
if ( defined( $$Wks{'Cells'}[$r][$c] ) ) {
my $val = $$Wks{'Cells'}[$r][$c]->Value;
chomp $val;
return $val;
}
return '';
}