The final key here was that the second argument to the post method needed to be an array ref (i.e., the hash arguments needed to be enclosed in []s). The code below works, returning the desired output page in the $mech object.
#!/usr/bin/perl
use warnings;
use strict;
use WWW::Mechanize;
my $hypermutUrl =
"http://http://hiv-dev.lanl.gov/cgi-bin/HYPERMUT/hypermut.cgi";
my $mech = WWW::Mechanize->new( autocheck => 1 );
my $alignment_as_string = <<'END_SEQS';
>HIV1-test.CONS
ATGGGATGTCTTGGGAATCAGCTGCTTATCGCGCTCTTGCTAGTAAGTGCTTTAGAGATTTATTGTGTTC
>HIV1-test.1
ATGGAATGTCTTGGAAATCAGCTGCTTATCGCGCTCTTGCTAGTAAGTGCTTTAAAGATTTATTGTGTTC
>HIV1-test.2
ATGGAATGTCTTGGGAATCAGCTGCTTATCGCGCTCTTGCTAGTAAGTGCTTTAAAGATTTATTGTGTTC
END_SEQS
$mech->post(
$hypermutUrl,
[
'FORMAT' => 'FASTA',
'ALIGNMENT' => $alignment_as_string,
'upfile1' => '',
'INN' => '',
'OUT' => '',
'MUTUPSTREAM' => '',
'MUTFROM' => 'G',
'MUTTO' => 'A',
'MUTDOWNSTREAM' => 'RD',
'ENFORCE' => 'DESCENDANT',
'CONTROLUPSTREAM' => '',
'CONTROLFROM' => 'G',
'CONTROLTO' => 'A',
'CONTROLDOWNSTREAM' => 'YN|RC',
'Analysis' => 'All',
'submit' => 'Run',
]
);
my $page = $mech->content;
open my $FH, ">/tmp/hypermut.html";
print {$FH} $page; close $FH;
warn "saved webpage data to /tmp/hypermut.html\n";
Thanks to any and all who thought about it, and most particularly to my colleague who found my error. |