Many thanks! Code: #! /usr/local/bin/perl -wT use strict; use CGI qw / :standard /; use CGI::Pretty; use Bio::SeqIO; use Bio::Root::IO; use Bio::SeqFeature::Generic; use Bio::Location::Simple; use Bio::Location::SplitLocationI; use File::Temp; my @features = read_file(param('file')); print header, start_html('Plasmid Feature Editor'); print h1('Plasmid Feature Editor'); print p('Load up a Genbank file to work with, then edit the features in the text box.'); print < END print start_multipart_form(), table({-cellpadding => 10}, TR({-class=> 'resultsbody'}, td(textarea(-name => 'editarea', -value => "@features", -rows => 20, -cols => 70, -override => (@features) || (param('clear')), ), ), ), TR({-class=>'resultstitle'}, td(filefield(-name => 'file', -length => 40), ), td(submit(-name => 'submit_button', -value => 'Click to display features'), ), ), TR({-class=>'resultstitle'}, td(submit(-name => 'save_button', -value => 'Click here to save your work'), ), td(reset(), ), ), ), end_form; print < FINISH print end_html; exit 0; sub read_file { my $fh = param('file'); my $gb_parser = Bio::SeqIO->new(-fh=>$fh,-format=>'Genbank'); my @features; while (my $seq = $gb_parser->next_seq) { push @features, $seq->get_all_SeqFeatures(); } return @features; }