#!/usr/bin/perl use strict; use warnings; # declare and initialize variables my @annotation = ( ); my $sequence = ''; my $i=1; my $define=''; my $in_sequence = 0; my @GenBankFile = ( ); my @data=(); print "Please enter the name of the file:\n"; my $filename=; chop($filename); print "DNA strings included in the file:\n"; my $dna_num=; chop($dna_num); open(DATA, ">data.txt"); print "\n----------------START--CALCULATION----------------\n\n"; @GenBankFile = get_file_data($filename); foreach my $line (@GenBankFile) { if( $line =~ /^\/\/\n/ ){ $annotation[1]=~s/^DEFINITION\s\s//g; $define="#".$i." ".$annotation[1]; # remove whitespace and line numbers from DNA sequence $sequence =~ s/[\s0-9]//g; print "$define"; print_sequence($sequence,50); print "\n"; push(@data,$define); push(@data,$sequence); push(@data,"\n\n"); $i=$i+1; if($i==($dna_num+1)){last;} $sequence=''; @annotation=(); $in_sequence=0; } elsif( $in_sequence) { # If we know we're in a sequence, $sequence .= $line; # add the current line to $$dna. } elsif ( $line =~ /^ORIGIN/ ) { # If $line begins a sequence, $in_sequence = 1; # set the $in_sequence flag. } else{ # Otherwise push( @annotation, $line); # add the current line to @annotation. } } print "\n-----------------END--CALCULATION-----------------\n\n"; print DATA @data; close(DATA); exit; sub print_sequence { my($sequence, $length) = @_; use strict; use warnings; # Print sequence in lines of $length for ( my $pos = 0 ; $pos < length($sequence) ; $pos += $length ) { print substr($sequence, $pos, $length), "\n"; } } sub get_file_data { my($filename) = @_; use strict; use warnings; # Initialize variables my @filedata = ( ); unless( open(GET_FILE_DATA, $filename) ) { print STDERR "Cannot open file \"$filename\"\n\n"; exit; } @filedata = ; close GET_FILE_DATA; return @filedata; }