vaitsa Δημοσ. 21 Οκτωβρίου 2008 Δημοσ. 21 Οκτωβρίου 2008 Γειά! Είμαι πολύ καινούργια στην 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. Παρακαλώ πολύ αν κάποιος μπορεί να με βοηθήσει!
PCharon Δημοσ. 21 Οκτωβρίου 2008 Δημοσ. 21 Οκτωβρίου 2008 Μια χαρά μου δουλεύει το 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;
vaitsa Δημοσ. 21 Οκτωβρίου 2008 Μέλος Δημοσ. 21 Οκτωβρίου 2008 Καταρχήν ευχαριστώ που απάντησες! Αλλά δυστυχώς δεν δουλεύει ούτε και με το if (για τα πειστήρια κοίτα επισυναπτόμενο)...
PCharon Δημοσ. 21 Οκτωβρίου 2008 Δημοσ. 21 Οκτωβρίου 2008 δεν δουλεύει ούτε και με το 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)
vaitsa Δημοσ. 21 Οκτωβρίου 2008 Μέλος Δημοσ. 21 Οκτωβρίου 2008 Δεν έγινε πάλι. Και φυσικά εννοείται πως τα 2 αρχεία είναι στον ίδιο φάκελο. Μήπως κάνω κάτι πολύ λάθος? Είμαι πολύ άσχετη στο κάτω κάτω, δεν θα ήταν περίεργο ε;
Billman Δημοσ. 22 Οκτωβρίου 2008 Δημοσ. 22 Οκτωβρίου 2008 Τρέχεις το script από command line ή μέσω browsing προγράμματος (dunno πως λέγεται ο default file explorer σε Mac);
vaitsa Δημοσ. 22 Οκτωβρίου 2008 Μέλος Δημοσ. 22 Οκτωβρίου 2008 Λοιπόν τρέχω το script από command line και μόλις ανακάλυψα ότι δουλεύει αν για το αρχείο 'NM_021964fragment.pep' του "δείξεις" την πλήρη διαδρομή (φάκελος, υποφάκελος κλπ). Δεν καταλαβαίνω γιατί όμως αυτό αφού σε όσες περιγραφές την εντολής διάβασα αναφέρει πως αν το script είναι στον ίδιον φάκελο με το αρχείο σου δουλεύει! Σε ευχαριστώ πάρα πολύ πάντως για τον χρόνο και την προσπάθεια σου! Τελικά ήταν όντως κάτι πολύ χαζούλικο...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.