Spreadsheet::ParseExcel $cell-›value() возвращает undef

Я новичок в Perl, и у меня проблемы с модулем синтаксического анализатора электронных таблиц Excel.

КОГДА я использую $cell->value() в отдельной строке, проблем не возникает, однако, когда я пытаюсь использовать это для вставки значения в массив, он возвращает undef, код показан ниже:

for my $row ($row_min .. $row_max) {
    my @line;
        for my $col ( $col_min .. $col_max) {
                my $cell = $worksheet->get_cell( $row, $col );
                $value = $cell->value;
                push @line, $value if defined($cell);
                print $cell->value;
                print Dumper $line;
                }

         }
}

Здесь напечатайте $cell->value; возвращает содержимое ячейки, но печатает Dumper $line; возвращает undef


person James Jiimmy    schedule 03.06.2015    source источник
comment
Что такое $line? Вы имеете в виду print Dumper (\@line); ?   -  person RobEarl    schedule 03.06.2015
comment
Да! Спасибо, я неправильно использовал Dumper, и getvalue действительно работал. Спасибо за помощь.   -  person James Jiimmy    schedule 03.06.2015
comment
Именно такие ошибки очень легко отловить с помощью: use strict; use warnings; Удачного вам дня, потому что очень часто никто не заморачивается вопросами чего не содержит use strict и use warnings;.   -  person kobame    schedule 03.06.2015


Ответы (1)


Вы должны нажать $cell->valueне $value

push @line, $cell->value if defined($cell);

Вы должны добавить use strict в начало вашей программы, чтобы в таком случае вы получили сообщение об ошибке.

person Jens    schedule 03.06.2015
comment
извините - опечатка, теперь исправлено (однако с использованием push @line, $cell-›value, если определено ($cell); также возвращает undef) - person James Jiimmy; 03.06.2015
comment
попробуйте изменить $value = $cell->value; на my $value = $cell->value;. - person Jens; 03.06.2015
comment
@JamesJiimmy, а когда ты сделаешь push @line, \$value? - person Jens; 03.06.2015