Προς το περιεχόμενο

Πρόβλημα με Perl


vaitsa

Προτεινόμενες αναρτήσεις

Δημοσ.

Γειά!

Είμαι πολύ καινούργια στην Perl και μπορεί να φανεί χαζό σε κάποιον αλλά έχω πρόβλημα με τα filehandle στην Perl, χωρίς να μπορώ να κατανοήσω που κάνω λάθος στο παρακάτω scriptακι. Το scriptακι προέρχεται από το βιβλίο Beginning Perl for Bioinformatics (O'Reilly) και είναι το παράδειγμα 4-5 το οποίο κιόλας μπορείς να το κατεβάσεις από το site του βιβλίου έτοιμο (http://examples.oreilly.com/begperlbio/begperlbio_all.zip)!

Πάραυτα σε μένα δεν δουλεύει και το terminal βγάζει αυτά τα ακαταλαβίστικα που φαίνονται στην εικόνα κάτω από τον κώδικα.

 

κώδικας:

#!usr/bin/perl -w

#reading protein sequence data from a file

 

#the filename of the file containing the protein sequence data

$proteinfilename= 'NM_021964fragment.pep';

 

 

#first we have to open the file and associatea filename with it.

#we choose the file name PROTEIN FILE for readibility

open (PROTEINFILE, $proteinfilename);

 

#now we do the actual reading of the protein sequence data from the file by using the

#angle brackets < and > to get the input from the filehandle. we store the data into our variable

# $protein

$protein = <PROTEINFILE>;

 

#now that we've got our data we can close the file

close PROTEINFILE;

 

#print the protein onto screen

print "Here is the protein:\n\n";

print $protein;

 

exit;

 

 

Το αρχείο NM_021964fragment.pep περιέχει το εξής:

MNIDDKLEGLFLKCGGIDEMQSSRTMVVMGGVSGQSTVSGELQD

SVLQDRSMPHQEILAADEVLQESEMRQQDMISHDELMVHEETVKNDEEQMETHERLPQ

GLQYALNVPISVKQEITFTDVSEQLMRDKKQIR

 

 

Το αποτέλεσμα στο terminal είναι :

http://img393.imageshack.us/my.php?image=terminaljh4.png

 

Δουλεύω (?) σε ένα MacOS X 10.5 με perl v5.8.8 built for darwin-thread-multi-2level.

Παρακαλώ πολύ αν κάποιος μπορεί να με βοηθήσει!

:fear:

Δημοσ.

Μια χαρά μου δουλεύει το script εμένα.

 

Εννοείται πως το αρχείο είναι μαζί με το σκριπτάκι, ναι?

(μήπως δεν βρίσκει το αρχείο και πάει το $protein unitialized, λέω)

 

Δεν είμαι σε MacOS όμως, λες σε σένα να είναι τόσο αυστηρός ο interpreter? Χα!

 

Υ.Γ. Άμα το κάνεις έτσι, τί θα λέει άραγες...

#!/usr/bin/perl -w

 

$proteinfilename = 'NM_021964fragment.pep';

open(PROTEINFILE, $proteinfilename);

$protein = <PROTEINFILE>;

close PROTEINFILE;

print "Content-type: text/plain\n\n";

print "Here is the protein:\n\n";

if($protein != NULL)print $protein;

exit;

Δημοσ.

Καταρχήν ευχαριστώ που απάντησες!

Αλλά δυστυχώς δεν δουλεύει ούτε και με το if

:cry:

(για τα πειστήρια κοίτα επισυναπτόμενο)...

post-117270-129062975596_thumb.jpg

Δημοσ.
δεν δουλεύει ούτε και με το if

Εμ πως να δουλέψει έτσι που το γραψα, έκανα λάθος, χα.

 

Γράψε το κι έτσι να δούμε (πάντως δεν έχει τίποτα το script, τι να πω)

#!/usr/bin/perl

 

$proteinfilename = 'NM_021964fragment.pep';

open(PROTEINFILE, $proteinfilename);

@protein = <PROTEINFILE>;

close PROTEINFILE;

print "Here is the protein:\n\n";

print @protein;

exit;

 

(γράφοντας @protein δίνει όλες τις γραμμές από το αρχείο στην έξοδο ενώ έτσι $protein δίνει μόνο την πρώτη. Δεν έχει κάποια σημασία τώρα, αλλά δοκίμασε να δούμε τί θα γράψει ο interpreter)

Δημοσ.

:cry:

Δεν έγινε πάλι. Και φυσικά εννοείται πως τα 2 αρχεία είναι στον ίδιο φάκελο.

Μήπως κάνω κάτι πολύ λάθος? Είμαι πολύ άσχετη στο κάτω κάτω, δεν θα ήταν περίεργο ε;

:-)

post-117270-129062975614_thumb.png

Δημοσ.

Λοιπόν τρέχω το script από command line και μόλις ανακάλυψα ότι δουλεύει αν για το αρχείο 'NM_021964fragment.pep' του "δείξεις" την πλήρη διαδρομή (φάκελος, υποφάκελος κλπ). Δεν καταλαβαίνω γιατί όμως αυτό αφού σε όσες περιγραφές την εντολής διάβασα αναφέρει πως αν το script είναι στον ίδιον φάκελο με το αρχείο σου δουλεύει!

Σε ευχαριστώ πάρα πολύ πάντως για τον χρόνο και την προσπάθεια σου!

Τελικά ήταν όντως κάτι πολύ χαζούλικο... :-)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...