Dear Michael,
Thanks for  your kind explanation. I understood it pretty well. I feel very 
fortunate to have you respond to my post.

I just wanna know if i must save that file ("NM021964fragment.pep") in a 
particular location in my OS X to run my scripts properly. It is not yet 
running.

Could you please write the lines of code exactly how I should run it? And would 
like to hear further instructions and recommendations.

Kind regards,
Femi

On Nov 12, 2013, at 1:08 AM, Michael Brader 
<mbra...@internode.com.au<mailto:mbra...@internode.com.au>> wrote:

Nathan has found your problem, but see below for more suggestions on your code:

On 11/12/2013 02:15 AM, Alaba, Oluwafemi (IITA) wrote:
Dear ALL,

I created a file named NM021964fragment.pep (using text editor) but I could not 
read that particular file.

Here is the script I used:

#!/usr/bin/perl -w

Remove the ' -w' above and add the following two lines to get extra error 
checking that will lead you towards better Perl programming habits

    #!/usr/bin/perl

    use strict;
    use warnings;

#Reading protein sequence from a file

The filename of the file containing the protein sequence data
$proteinfilename = "NM021964fragment.pep";

#First we have to 'open' the file and associate it a 'filehandle' with it. We 
choose the filehandle
#PROTEINFILE for readability.

open(PROTEINFILE, $proteinfilename);

PROTEINFILE is known as a 'bareword filehandle' and it has some limitations. 
Better to use a filehandle variable. The '<' indicates that you are opening the 
file for reading. It is the default but using it tells someone reading your 
code what your intentions are. You should also check to see whether the open 
succeeded:

    open my $PROTEINFILE, '<', $proteinfilename
        or die "Failed to open protein file $proteinfilename. Reason: $!";


#now we do the actual reading of the protein sequence data from the file by 
using angle bracket < and >
$protein = <PROTEINFILE>;

This will read the first line of the file including the trailing newline. If 
that is what you want, fine. The 'strict' line you inserted above means that 
you will have to declare variables on their first use. To remove the trailing 
newline use chomp:

    my $protein = <$PROTEINFILE>;
    chomp $protein;

If what you wanted is to read all the lines of the file, it is customary to use 
a while loop:

    while ( my $protein = <$PROTEINFILE> ) {
        chomp $protein;
        # do something with $protein
    }


close PROTEINFILE;

You should always check the return value of system calls such as close. It's 
unlikely after reading but a big problem after writing:

close $PROTEINFILE
    or warn "Problem closing protein file $proteinfilename. Reason: $!";

Cheers,
Michael

--
Michael Brader                    Senior Software Engineer and Perl Person
There's no such thing as a DevOps team           Technology/Softdev/DevOps
Internode       http://internode.on.net/          
mbra...@internode.com.au<mailto:mbra...@internode.com.au>
iiNet             http://iinet.net.au/         
m.bra...@staff.iinet.net.au<mailto:m.bra...@staff.iinet.net.au>


Reply via email to