diff --git a/modules/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm b/modules/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm index d80846d297b56ebb176d9a31063edf9cd6b9c08e..069489744cb9c66bad9afc7ef627e9527794d3ad 100644 --- a/modules/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm +++ b/modules/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm @@ -165,14 +165,15 @@ sub print_feature { delete $summary{'score'}; delete $summary{'source'}; # Slice the hash for specific keys in GFF-friendly order - my @ordered_keys = qw(ID Name Alias Parent Target Gap Derives_from Note Dbxref Ontology_term Is_circular); + my @ordered_keys = grep { exists $summary{$_} } qw(ID Name Alias Parent Target Gap Derives_from Note Dbxref Ontology_term Is_circular); my @ordered_values = @summary{@ordered_keys}; while (my $key = shift @ordered_keys) { my $value = shift @ordered_values; if ($value) { - $row .= $key."=".uri_escape($value,'\t\n\r;=%&,').";"; + $row .= $key."=".uri_escape($value,'\t\n\r;=%&,'); + delete $summary{$key}; + $row .= ';' if scalar(@ordered_keys) > 0 || scalar(keys %summary) > 0; } - delete $summary{$key}; } # Catch the remaining keys, containing whatever else the Feature provided my @keys = sort keys %summary;