Я следую рекомендациямPost/отправить файл с помощью submit_form рутины WWW :: Механизируйте модуль
Если вы хотите отправить файл и получить его содержимое от скаляра, а не файл в файловой системе, вам можно использовать:
$mech->submit_form(with_fields => { logfile => [ [ undef, 'whatever', Content => $content ], 1 ] });
от WWW :: Механизируйте documentation
Мой код для отправки файла
$mech->submit_form(with_fields =>
{ logfile => [ [ undef, "import_codes.xlsx", Content => $file_dir ], 1 ] });
Его недостаток с исключением;
Can't call method "value" on an undefined value at /usr/local/share/perl/5.18.2/WWW/Mechanize.pm line 1568.
at /usr/local/share/perl/5.18.2/WWW/Mechanize.pm line 1568.
WWW::Mechanize::set_fields('WWW::Mechanize=HASH(0xf51b040)', 'logfile', 'ARRAY(0xf71e6dc)') called at /usr/local/share/perl/5.18.2/WWW/Mechanize.pm line 1948
WWW::Mechanize::submit_form('WWW::Mechanize=HASH(0xf51b040)', 'form_name', 'inputform', 'fields', 'HASH(0xf71e920)')
фрагмент кода Mechanize.pm от линии 1560 до 1575
sub set_fields {
my $self = shift;
my %fields = @_;
my $form = $self->current_form or $self->die('No form defined');
while (my ($field, $value) = each %fields) {
if (ref $value eq 'ARRAY') {
$form->find_input($field, undef,
$value->[1])->value($value->[0]);
}
else {
$form->value($field => $value);
}
} # while
}
В вашей 'submit_form отсутствует лимент закрывающего' '' '. Это ошибка копирования/вставки? – simbabque
Да, его ошибка копирования/вставки, мой код компилируется и выполняется. – Anil
Пожалуйста, исправьте это. Какая версия WWW :: Mechanize это? В последнем методе 'set_fields' [в строке 793] (https://v1.metacpan.org/source/OALDERS/WWW-Mechanize-1.80/lib/WWW/Mechanize.pm#L793). – simbabque