Difference between revisions of "Exercise 5.8"
Jump to navigation
Jump to search
(New page: Return to Week 2 <br> Exercise 5.8 in <i>Beginning Perl for Bioinformatics</i></b> <pre> </pre>) |
|||
Line 4: | Line 4: | ||
<pre> | <pre> | ||
+ | #!/usr/bin/perl | ||
+ | use warnings; | ||
+ | use strict; | ||
+ | #Erika Phelps | ||
+ | #28 Sept 2009 | ||
+ | #Exercise 5.8 (nodification of example5-3.pl) | ||
+ | |||
+ | #Ask the user for the filename of the file containing | ||
+ | #the protein sequence data, and collect it from the keyboard | ||
+ | |||
+ | print "Please type the filename of the protein sequence data: "; | ||
+ | |||
+ | my $proteinfilename = <STDIN>; | ||
+ | my $motif; | ||
+ | |||
+ | #Remove the newline from the protein filename | ||
+ | |||
+ | chomp $proteinfilename; | ||
+ | |||
+ | #Open the file, or exit | ||
+ | |||
+ | unless ( open (PROTEINFILE, $proteinfilename) ) { | ||
+ | |||
+ | print "Cannot open file \"$proteinfilename\"\n\n"; | ||
+ | exit; | ||
+ | } | ||
+ | |||
+ | #Read the protein sequence data from the file, and store it | ||
+ | #into the array variable @protein | ||
+ | |||
+ | my @protein = <PROTEINFILE>; | ||
+ | |||
+ | #Close the file - we've read all the data into @protein now. | ||
+ | |||
+ | #Put the sequence data into a single string, as it's easier to search | ||
+ | #for a motif in a string than in an array of lines | ||
+ | |||
+ | my $protein = join( '' , @protein); | ||
+ | |||
+ | #Remove white space | ||
+ | |||
+ | $protein =~ s/\s//g; | ||
+ | |||
+ | #In a loop, ask the user for a motif, search for the motif, and report | ||
+ | #if it was found. Exit if no motif is entered. | ||
+ | |||
+ | do { | ||
+ | print "Enter a motif to search for: "; | ||
+ | |||
+ | $motif = <STDIN>; | ||
+ | |||
+ | #Remove the newline at the end of $motif | ||
+ | |||
+ | chomp $motif; | ||
+ | |||
+ | #Look for the motif | ||
+ | |||
+ | if ( $protein =~ /$motif/, $& ) { | ||
+ | |||
+ | print "I found the motif:\n$&\n"; | ||
+ | |||
+ | } else { | ||
+ | |||
+ | print "I couldn\'t find it.\n\n"; | ||
+ | } | ||
+ | |||
+ | #Exit on an empty user input | ||
+ | |||
+ | } until ( $motif =~ /^\s*$/ ); | ||
+ | |||
+ | #Exit the program | ||
+ | |||
+ | exit; | ||
</pre> | </pre> |
Latest revision as of 20:53, 28 September 2009
Return to Week 2
Exercise 5.8 in Beginning Perl for Bioinformatics
#!/usr/bin/perl use warnings; use strict; #Erika Phelps #28 Sept 2009 #Exercise 5.8 (nodification of example5-3.pl) #Ask the user for the filename of the file containing #the protein sequence data, and collect it from the keyboard print "Please type the filename of the protein sequence data: "; my $proteinfilename = <STDIN>; my $motif; #Remove the newline from the protein filename chomp $proteinfilename; #Open the file, or exit unless ( open (PROTEINFILE, $proteinfilename) ) { print "Cannot open file \"$proteinfilename\"\n\n"; exit; } #Read the protein sequence data from the file, and store it #into the array variable @protein my @protein = <PROTEINFILE>; #Close the file - we've read all the data into @protein now. #Put the sequence data into a single string, as it's easier to search #for a motif in a string than in an array of lines my $protein = join( '' , @protein); #Remove white space $protein =~ s/\s//g; #In a loop, ask the user for a motif, search for the motif, and report #if it was found. Exit if no motif is entered. do { print "Enter a motif to search for: "; $motif = <STDIN>; #Remove the newline at the end of $motif chomp $motif; #Look for the motif if ( $protein =~ /$motif/, $& ) { print "I found the motif:\n$&\n"; } else { print "I couldn\'t find it.\n\n"; } #Exit on an empty user input } until ( $motif =~ /^\s*$/ ); #Exit the program exit;