Если это ваш код, то он будет выдавать ошибки с жалобами на $col1
и $col2
, требующих "явного имени пакета".
Это означает, что вы не правильно объявили переменные. Вы объявляете переменные, используя ключевое слово my
. Но my
объявляет переменные в блоке кода. Поэтому, когда вы пишете это:
foreach my $ln (@$sth1) {
my($col1, $col2) = @$ln;
print "$col1 $col2\n";
}
переменные объявляются только в пределах этого блока. И когда вы пытаетесь использовать их вне блока:
$worksheet->write( "A1", "$col1" );
$worksheet->write( "A2", "$col2" );
Вы получите ошибку, о которой я упоминал выше.
Исправление для этого заключается в объявлении переменных на правильном уровне - то есть вне цикла.
my ($col1, $col2);
foreach my $ln (@$sth1) {
($col1, $col2) = @$ln;
print "$col1 $col2\n";
}
Для справки в будущем, когда вы обращаетесь за помощью к сайту, подобному этому, очень полезно, если вы дадите нам всю полезную информацию - особенно сообщения об ошибках, которые вы видите.