in reply to Re^4: Spreadsheet::ParseExcel Script Fails to Parse (access) Excel Spreadsheet
in thread Spreadsheet::ParseExcel Script Fails to Parse (access) Excel Spreadsheet

#!/usr/bin/perl -- use strict; use warnings; use diagnostics; my $foo = 1; {# a new scope my $bar = 2; }# end of new scope my $baz = $bar; # $bar doesn't exist in this scope __END__ Global symbol "$bar" requires explicit package name at test.pl line 12 +. Execution of test.pl aborted due to compilation errors (#1) (F) You've said "use strict vars", which indicates that all variab +les must either be lexically scoped (using "my"), declared beforehand +using "our", or explicitly qualified to say which package the global var +iable is in (using "::"). Uncaught exception from user code: Global symbol "$bar" requires explicit package name at test.pl + line 12. Execution of test.pl aborted due to compilation errors. at test.pl line 13
To "fix" it, you do something like
my $foo = 1; my $bar; {# a new scope $bar = 2; }# end of new scope my $baz = $bar;

Replies are listed 'Best First'.
Re^6: Spreadsheet::ParseExcel Script Fails to Parse (access) Excel Spreadsheet
by finhagen (Sexton) on Sep 22, 2008 at 00:43 UTC
    Thanks so much. Using our $var did the trick and my script is functioning properly now. Here is the final version:
    #!/usr/bin/perl use strict; use warnings; use DBI; use DBD::mysql; use Spreadsheet::ParseExcel; # DBI configuration variables my $platform = "mysql"; my $database = "smdb"; my $host = "Sinn"; my $port = "3306"; my $tablename = "site"; my $user = "user"; my $pw = "password"; #Data source name my $dsn = "dbi:mysql:smdb:localhost:3306"; # PERL DBI connection handle my $dbh = DBI->connect($dsn, $user, $pw)or die "Unable to connect: $DB +I::errstr\n"; #xls file to be parsed my $file = "SAMReport.xls"; #global variables our $siteid; our $name; our $address; our $city; our $state; our $zip; my $workbook = Spreadsheet::ParseExcel::Workbook->Parse($file)or die " +Unable to open $file\n"; #locate columns in the spreadsheet from which we want to extract data foreach my $sheet (@{$workbook->{Worksheet}}) { print "Sheet number $sheet\n"; foreach my $col ($sheet->{MinCol} .. $sheet->{MaxCol}) { if ($sheet->{Cells}[0][$col]->{Val} eq "Site Number") { $siteid = $col; print "$siteid\n"; } if ($sheet->{Cells}[0][$col]->{Val} eq "Site Name") { $name = $col; print "$name\n"; } if ($sheet->{Cells}[0][$col]->{Val} eq "Address") { $address = $col; print "$address\n"; } if ($sheet->{Cells}[0][$col]->{Val} eq "City") { $city = $col; print "$city\n"; } if ($sheet->{Cells}[0][$col]->{Val} eq "State") { $state = $col; print "$state\n"; } if ($sheet->{Cells}[0][$col]->{Val} eq "Zip Code") { $zip = $col; print "$zip\n"; } } #iterate through spreadsheet rows and extract site.siteid, site.name, +site.address, site.city, site.state, site.zip foreach my $row ($sheet->{MinRow}+1 .. $sheet->{MaxRow}) { my $site_number = $sheet->{Cells}[$row][$siteid]->{Val}; my $site_name = $sheet->{Cells}[$row][$name]->{Val}; my $site_address = $sheet->{Cells}[$row][$address]->{Val}; my $site_city = $sheet->{Cells}[$row][$city]->{Val}; my $site_state = $sheet->{Cells}[$row][$state]->{Val}; my $site_zip = $sheet->{Cells}[$row][$zip]->{Val}; $dbh->do("insert into site (indate,sitei +d,name,address,city,state,zip) values (CURDATE(),\'$site_number\',\'$site_name\',\'$site_address +\',\'$site_city',\'$site_state\',\'$site_zip\')"); } } exit;