Εκμάθηση Perl
Τι είναι η Perl;
Perl είναι μια υψηλού επιπέδου, γενικής χρήσης, ερμηνευμένη, δυναμική γλώσσα προγραμματισμού. Ο όρος Perl σημαίνει "Πρακτική εξαγωγή και γλώσσα αναφοράς", παρόλο που δεν υπάρχει αρκτικόλεξο για το Perl. Εισήχθη από τον Larry Wall το 1987. Η γλώσσα Perl σχεδιάστηκε ειδικά για επεξεργασία κειμένου. Αλλά τώρα, χρησιμοποιείται ευρέως για διάφορους σκοπούς, συμπεριλαμβανομένης της διαχείρισης συστήματος Linux, του προγραμματισμού δικτύου, της ανάπτυξης Ιστού κ.λπ.
Ας το πούμε με έναν απλό τρόπο. Ενώ οι υπολογιστές καταλαβαίνουν μόνο 0 και 1 (δυαδική γλώσσα/γλώσσα μηχανής/ [γλώσσα χαμηλού επιπέδου]), είναι πολύ δύσκολο να προγραμματίσουμε σε μια δυαδική γλώσσα για εμάς τους ανθρώπους. Η Perl είναι μια γλώσσα προγραμματισμού που χρησιμοποιεί στοιχεία φυσικής γλώσσας, λέξεις που χρησιμοποιούνται στην κοινή αγγλική γλώσσα και, ως εκ τούτου, είναι πιο κατανοητή από τον άνθρωπο [γλώσσα υψηλού επιπέδου]. Τώρα υπάρχει ένα πρόβλημα. Οι υπολογιστές δεν μπορούν να κατανοήσουν γλώσσες υψηλού επιπέδου, τις οποίες μπορούμε εύκολα να κατανοήσουμε εμείς οι άνθρωποι. Για αυτό, χρειαζόμαστε κάτι που να μπορεί να μεταφράσει τη γλώσσα υψηλού επιπέδου σε γλώσσα χαμηλού επιπέδου. Εδώ ο διερμηνέας έρχεται στη βοήθειά μας. Ο διερμηνέας είναι ένα κομμάτι λογισμικού που μετατρέπει το πρόγραμμα που είναι γραμμένο στη γλώσσα υψηλού επιπέδου σε γλώσσα χαμηλού επιπέδου ώστε ο υπολογιστής να κατανοεί και να εκτελεί τις οδηγίες που είναι γραμμένες στο πρόγραμμα. Ως εκ τούτου, η Perl είναι μια ερμηνευμένη γλώσσα προγραμματισμού.
Πού χρησιμοποιείται η Perl;
Η δύναμη της γλώσσας δέσμης ενεργειών Perl μπορεί να εφαρμοστεί σε πολλούς τομείς. Η πιο δημοφιλής χρήση της Perl είναι στην ανάπτυξη Ιστού. Η Perl χρησιμοποιείται επίσης για την αυτοματοποίηση πολλών εργασιών στους διακομιστές Ιστού και άλλες εργασίες διαχείρισης, μπορεί να δημιουργήσει αυτόματα μηνύματα ηλεκτρονικού ταχυδρομείου και να καθαρίσει συστήματα. Το Perl εξακολουθεί να χρησιμοποιείται για τον αρχικό του σκοπό, δηλαδή την εξαγωγή δεδομένων και τη δημιουργία αναφορών. Μπορεί να παράγει αναφορές σχετικά με τη χρήση πόρων και να ελέγχει για ζητήματα ασφάλειας σε ένα δίκτυο. Για αυτόν τον λόγο, η Perl έχει γίνει μια δημοφιλής γλώσσα που χρησιμοποιείται στην ανάπτυξη ιστού, τη δικτύωση και τη βιοπληροφορική. Εκτός από όλα αυτά το perl μπορεί επίσης να χρησιμοποιηθεί για προγραμματισμό CGI.
Το Perl μπορεί επίσης να χρησιμοποιηθεί για δημιουργία και χειρισμό εικόνων. Εκτός από αυτή τη δικτύωση μέσω telnet, FTP κ.λπ., η δημιουργία γραφικής διεπαφής χρήστη, τα ηλεκτρονικά VLSI και η δημιουργία φίλτρων αλληλογραφίας για τη μείωση των πρακτικών ανεπιθύμητης αλληλογραφίας είναι μερικές περιπτώσεις χρήσης της Perl.
Η Perl είναι επίσης γνωστή για την εφαρμογή πρακτικών OOP (αντικειμενοστραφής προγραμματισμός) και υποστηρίζει όλες τις μορφές κληρονομικότητας (απλή, πολλαπλή & διαμάντι), πολυμορφισμό και ενθυλάκωση. Η Perl είναι αρκετά ευέλικτη ώστε να υποστηρίζει ταυτόχρονα πρακτικές Procedural καθώς και OOP. Η Perl έχει επίσης επιπλέον μονάδες που σας επιτρέπουν να γράφετε ή να χρησιμοποιείτε/επαναχρησιμοποιείτε κώδικα γραμμένο Python, PHP, PDL, TCL, Octave, Java, C, C++, Basic, Ruby και Lua στο σενάριο Perl σας. Αυτό σημαίνει ότι μπορείτε να συνδυάσετε την Perl με αυτά τα επιπλέον γλώσσες προγραμματισμού μάλλον ξαναγράφοντας τον υπάρχοντα κώδικα.
Εφαρμογές της γλώσσας προγραμματισμού Perl
Γιατί να χρησιμοποιήσετε την Perl;
Είναι αλήθεια ότι υπάρχουν άλλες γλώσσες προγραμματισμού που μπορούν να χρησιμοποιηθούν για να κάνουν όλα τα πράγματα που αναφέρθηκαν παραπάνω, τότε γιατί να χρησιμοποιήσετε συγκεκριμένα την Perl; Το Perl μαθαίνεται πολύ εύκολα, ειδικά αν έχετε ένα υπόβαθρο στον προγραμματισμό υπολογιστών. Το Perl σχεδιάστηκε για να είναι εύκολο να γράψουν και να κατανοήσουν οι άνθρωποι αντί να το διευκολύνει στην επεξεργασία από υπολογιστές. Χρησιμοποιεί κανονικές εκφράσεις. Το φυσικό στυλ της γλώσσας είναι διαφορετικό από άλλες γλώσσες προγραμματισμού που χρησιμοποιούν συγκεκριμένη γραμματική και συντακτικά. Ως εκ τούτου, η Perl είναι πολύ ευέλικτη και δεν σας επιβάλλει κάποιον ιδιαίτερο τρόπο να σκεφτείτε μια λύση ή ένα πρόβλημα. Η Perl είναι εξαιρετικά φορητή. Μπορεί να τρέξει σε οποιοδήποτε λειτουργικό σύστημα που έχει εγκατεστημένο τον διερμηνέα Perl, επομένως είναι ανεξάρτητο από την πλατφόρμα. Όλα τα Linux OperaΤα συστήματα ting είναι εγκατεστημένα με την Perl, ώστε να μπορείτε να ξεκινήσετε την κωδικοποίηση Perl στο Linux από το κουτί. Αυτό είναι σε αντίθεση με τα σενάρια Shell, όπου ο κώδικας αλλάζει με τη χρήση της διανομής Linux, καθιστώντας το όλο και λιγότερο φορητό Μικρές συγκεκριμένες εργασίες στο Perl γίνονται πολύ εύκολες και γρήγορες. Σε όλο αυτό το σεμινάριο Perl για αρχάριους, θα μάθετε πώς μπορείτε να κωδικοποιήσετε μικρά, γρήγορα προγράμματα για συγκεκριμένες εργασίες. Ας πάρουμε ένα απλό παράδειγμα του κλασικού προγράμματος Hello World το οποίο χρησιμοποιείται για να ξεκινήσει η εκμάθηση οποιασδήποτε γλώσσας προγραμματισμού που έχει ως ρίζες το UNIX:
Παράδειγμα: Perl hello world

#!/usr/bin/perl print "Hello, world!";
Παραγωγή:
Γειά σου Κόσμε!
Οι παραπάνω δύο γραμμές κώδικα θα εκτυπώσουν Hello, world! Τώρα δεν ήταν πολύ απλό και γρήγορο; Μαθητές με γνώση Γ, C++ θα γνωρίζει ότι απαιτεί πολλές περισσότερες γραμμές κώδικα για να ληφθεί η ίδια έξοδος σε αυτές τις γλώσσες.
Ίσως αναρωτιέστε γιατί Η Perl είναι τόσο διάσημη στον Ιστό. Είναι απλό καθώς τα περισσότερα πράγματα που συμβαίνουν στον Ιστό είναι ΚΕΙΜΕΝΟΥ και η Perl είναι πολύ καλή στην επεξεργασία κειμένου. Εάν συγκρίνουμε την Perl με οποιαδήποτε από τις γλώσσες, τότε η Perl θα είναι η καλύτερη γλώσσα που είναι καλή στον χειρισμό αρχείων, την επεξεργασία κειμένου και την αναφορά εξόδου
Ένα από τα καλύτερα πλεονεκτήματα της Perl είναι ότι είναι ελεύθερη για χρήση
Η κοινότητα της Perl πιστεύει ακράδαντα ότι το λογισμικό πρέπει να είναι ελεύθερα διαθέσιμο, ελεύθερα τροποποιήσιμο και ελεύθερα διανεμόμενο. Αρκετοί εθελοντές από την κοινότητα Perl προσπαθούν να κάνουν τη γλώσσα προγραμματισμού όσο το δυνατόν καλύτερη.
Πλεονεκτήματα και μειονεκτήματα του Perl
| Πλεονεκτήματα: | Μειονεκτήματα: |
|---|---|
|
|
|
|
|
Ας αρχίσουμε
Έχοντας αρκετές γνώσεις σχετικά με την ιστορία της Perl και τις βασικές έννοιες του προγραμματισμού υπολογιστών που απαιτούνται για την κωδικοποίηση στην Perl, είναι καιρός να κάνουμε μια βουτιά και να ξεκινήσουμε με την Perl. Το επόμενο κεφάλαιο θα σας διδάξει πώς μπορείτε να ρυθμίσετε την Perl στο σύστημά σας και να προετοιμαστείτε για το ταξίδι κωδικοποίησης στο Perl. Αυτό το σεμινάριο δέσμης ενεργειών Perl θα λάβει το Linux ως το λειτουργικό σύστημα που θα χρησιμοποιούν οι μαθητές για την κωδικοποίηση στο Perl.
Λήψη και εγκατάσταση Perl – Windows, Mac & Linux
Πώς να αποκτήσετε την Perl;
Καλά νέα μάλλον το έχεις!
Αλλά αν δεν μπορείτε να το βρείτε ήδη στο σύστημά σας, μπορείτε να το αποκτήσετε δωρεάν.
Για να μάθετε αν έχετε ήδη εγκαταστήσει την Perl, μεταβείτε στη γραμμή εντολών και πληκτρολογήστε: perl -v

Η εντολή θα εμφανίσει την έκδοση του Perl εάν είναι εγκατεστημένη. Σε αυτήν την περίπτωση, η έκδοση είναι v5.14.2. Αλλά αν όχι, μην πανικοβληθείτε…
Unix
|
Ήδη εγκατεστημένο Έρχεται προεγκατεστημένο με την Perl, αν και ίσως χρειαστεί να ενημερώσετε στην πιο πρόσφατη έκδοση. |
Mac OS
|
Ήδη εγκατεστημένο Το OSX έρχεται με προεγκατεστημένο το Perl, αν και μπορεί να χρειαστεί να το ενημερώσετε στην πιο πρόσφατη έκδοση |
Windows
|
Ανάγκη εγκατάστασης Δύο επιλογές είναι διαθέσιμες
|
Ενημέρωση Perl σε Linux:
Εάν πρέπει να ενημερώσετε την έκδοση Perl, τότε απλώς εισαγάγετε μία γραμμή εντολών
sudo apt-get install perl
και χαλάρωσε. Τα υπόλοιπα θα τα φροντίσουν. Απλώς βεβαιωθείτε ότι έχετε ενεργή σύνδεση στο Διαδίκτυο.


Εγκαταστήστε το perl για Windows:
Πρώτα, κατεβάστε το Active Perl από αυτό σύνδεσμος. Ακολουθήστε αυτά τα βήματα για να εγκαταστήσετε το ActivePerl Windows Σύστημα. Δείτε τα παρακάτω στιγμιότυπα οθόνης για το ίδιο.
Βήμα 1: Μόλις κάνετε λήψη του προγράμματος εγκατάστασης και ξεκινήσετε την εγκατάσταση, θα δείτε το παρακάτω παράθυρο, κάντε κλικ στο επόμενο για να συνεχίσετε.

Βήμα 2: Αποδεχτείτε τη συμφωνία άδειας χρήσης για να συνεχίσετε την εγκατάσταση.

Βήμα 3: Ακολουθούν διάφορα πακέτα που θα εγκατασταθούν. Από προεπιλογή, θα επιλεγούν όλα. Το μόνο που διαφέρει είναι το PPM (Perl Package Manager). Αυτό είναι το βοηθητικό πρόγραμμα που παρέχεται από την Active Perl για την εγκατάσταση εξωτερικών μονάδων ή βιβλιοθηκών Perl στο σύστημά σας. Κάντε κλικ στο Επόμενο για να προχωρήσετε.

Βήμα 4: Αυτοί είναι διαφορετικοί τύποι επεκτάσεων Perl που μπορούν να χρησιμοποιηθούν για την Perl. Κυρίως θα χρησιμοποιούμε .Pl, .Plx και .Pm για Perl. Οι λειτουργικές μονάδες Perl χρησιμοποιούν βασικά το .Pm ως επέκταση αρχείου για να αναφέρονται σε ένα αρχείο βιβλιοθήκης. Επιλέξτε όλες τις επιλογές και κάντε κλικ στο κουμπί Επόμενο.

Βήμα 5: Κάντε κλικ στο κουμπί Εγκατάσταση για να προχωρήσετε στην εγκατάσταση.

Βήμα 6: Μόλις εγκατασταθεί, εκτελέστε την εντολή "Perl –v" για να ελέγξετε εάν η Perl έχει εγκατασταθεί με επιτυχία στο σύστημά σας.

Υπάρχουν πολλά πράγματα που πρέπει να συζητηθούν για τη ρύθμιση του περιβάλλοντος Perl τόσο σε Linux όσο και σε Windows, καθώς δεν θα περιλαμβάνονται πολλά αρχεία βιβλιοθήκης σε αυτήν την εγκατάσταση. Πρέπει να τα εγκαταστήσετε χειροκίνητα. Μπορείτε να τα εγκαταστήσετε χειροκίνητα χρησιμοποιώντας το CPAN (Comprehensive Perl Archive Network) ή είτε PPM που λειτουργεί μόνο για perl windows. Αλλά αυτά τα αρχεία δεν είναι υποχρεωτικά για να ξεκινήσετε την κωδικοποίηση στο Perl.
Εκτός από αυτή τη ρύθμιση των Windows, μπορείτε να χρησιμοποιήσετε Windows Η νέα δυνατότητα του υποσυστήματος Linux του 10 σε Windows και χρησιμοποιήστε το για την εκτέλεση κώδικα perl
Πρώτο πρόγραμμα Perl
Hello world!
Παράδειγμα Perl: Hello World
#!/usr/bin/perl -w #this is just a comment… print "Hello World";
Μην ανησυχείτε αν δεν καταλαβαίνετε αυτό το κείμενο. Όλα θα ξεκαθαρίσουν σύντομα. Ελάτε και ρίξτε μια ματιά στη γραμμή:
#!/usr/bin/perl
Αυτό λέει στο Operating System για να εκτελέσει αυτό το αρχείο με το πρόγραμμα που βρίσκεται στο /usr/bin/perl Ορισμένα IDE δεν χρειάζονται αυτήν τη γραμμή. Εάν είναι απαραίτητο, πρέπει να γράψετε εδώ μια διαδρομή προς τον διερμηνέα σας. Θυμάμαι! Αυτή η ειδική γραμμή πρέπει να βρίσκεται στην αρχή του προγράμματός σας και πρέπει να ξεκινά από το #! χρήση προειδοποιήσεων· Αυτή είναι μια άλλη ειδική εντολή που λέει στον διερμηνέα να εμφανίζει τυχόν προειδοποιήσεις, π.χ. -w που ενεργοποιεί τις προειδοποιήσεις σε παγκόσμιο επίπεδο.
print "Hello World";
Η οδηγία εκτύπωσης γράφει κείμενο στην οθόνη. Το ερωτηματικό στο τέλος της γραμμής λέει στον διερμηνέα perl ότι η εντολή έχει ολοκληρωθεί. Πρέπει να βάλετε ένα ερωτηματικό στο τέλος κάθε εντολής στον κώδικα Perl. Σημειώστε το εισαγωγικό (“). Είναι απαραίτητο για εκτυπωτικές οδηγίες. Αποθηκεύστε το παραπάνω σενάριο ως firstprog.pl
On Windows
Εάν έχετε εγκαταστήσει το Strawberry, μπορείτε απλά να κάνετε κλικ στο Run. Μπορείτε επίσης να εκτελέσετε διεπαφή γραμμής εντολών και να γράψετε στην κονσόλα:
C:\> perl path\firstprog.pl
ή, εάν το perl.exe δεν βρίσκεται στη διαδρομή σας:
C:\> c:\perl\bin\perl.exe firstprog.pl
Σε Linux/Unix
Απλά πρέπει να ανοίξετε το Terminal και να γράψετε:
perl firstprog.pl
Εάν δεν μπορείτε να εκτελέσετε το πρόγραμμα, βεβαιωθείτε ότι έχετε δικαίωμα να το εκτελέσετε. Πληκτρολογήστε στο τερματικό:
chmod +x firstprog.pl
Το πρόγραμμά σας είναι πλέον εκτελέσιμο και έτοιμο για εκτέλεση. Για εκτέλεση, γράψτε:
./firstprog
Εγκαταστήστε μονάδες cpan μείον
Οι μονάδες είναι ένα σύνολο κωδίκων που χρησιμοποιούνται για την εκτέλεση εργασιών που εκτελούν κοινές λειτουργίες σε πολλά προγράμματα. Εάν χρησιμοποιείτε μονάδες perl, δεν χρειάζεται να ξαναγράψετε τους κωδικούς για να εκτελέσετε την ίδια λειτουργία. Η Perl μπορεί να κάνει χρήση τέτοιων εξωτερικών βιβλιοθηκών κωδικών. Μία από τις καλύτερες βιβλιοθήκες είναι η CPAN. Σημαίνει Comprehensive Perl Archive Network και περιέχει έναν τεράστιο αριθμό μονάδων Perl που μπορείτε να χρησιμοποιήσετε. Είναι μια κοινότητα ή ένα δίκτυο μεγάλου αριθμού προγραμματιστών που συνεισφέρουν τέτοιες ενότητες. Εγκαθιστώντας υποστήριξη για μονάδες CPAN στη μονάδα perl σας, μπορείτε να χρησιμοποιήσετε τις μονάδες CPAN και να κάνετε την εργασία σας πιο εύκολη. Τα περισσότερα modules της Perl είναι γραμμένα σε Perl, μερικά χρησιμοποιούν XS (είναι γραμμένα σε C), επομένως απαιτούν έναν μεταγλωττιστή C (είναι εύκολο να λάβετε αυτήν τη ρύθμιση – μην πανικοβάλλεστε. Οι μονάδες μπορεί να έχουν εξαρτήσεις από άλλες μονάδες (σχεδόν πάντα στο CPAN) και δεν μπορεί να εγκατασταθεί χωρίς αυτές (ή χωρίς μια συγκεκριμένη έκδοση Αξίζει να διαβάσετε προσεκτικά την τεκμηρίωση για τις παρακάτω επιλογές). λάβετε, αποσυσκευάστε, δημιουργήστε και εγκαταστήστε λειτουργικές μονάδες από το CPAN για να διευκολύνετε την εγκατάσταση άλλων λειτουργιών (θα μας ευχαριστήσετε αργότερα). App-cpanminus μονάδες perl, στη γραμμή εντολών πληκτρολογήστε:
cpan App::cpanminus
cpan App::cpanminus Βεβαιωθείτε ότι έχετε σύνδεση στο διαδίκτυο κατά τη λήψη και εγκατάσταση των μονάδων perl.

Τώρα εγκαταστήστε οποιαδήποτε ενότητα:
cpan –i <Module_Name>.
Ας δούμε ένα παράδειγμα εγκατάστασης μιας ενότητας File::Data (Είναι μια διεπαφή για πρόσβαση στα δεδομένα αρχείου).

Μεταβλητή Perl
Τώρα, θα μιλήσουμε για μεταβλητές. Μπορείτε να φανταστείτε μεταβλητή σαν είδος κοντέινερ που περιέχει μία ή περισσότερες τιμές. Αφού οριστεί, το όνομα της μεταβλητής παραμένει το ίδιο, αλλά η τιμή ή οι τιμές αλλάζουν ξανά και ξανά.
Υπάρχουν 3 τύποι μεταβλητών:
Τύποι μεταβλητών στο Perl
Τα πιο εύκολα είναι τα σκαλοπάτια, και αυτό είναι το σημερινό μας θέμα
Scalar Variable
Αυτός ο τύπος μεταβλητής έχει μια ενιαία τιμή.
Το όνομά του ξεκινά με ένα σύμβολο δολαρίου και ένα αναγνωριστικό Perl (είναι το όνομα της μεταβλητής μας).
Scalar μεταβλητή σε Perl
Σύμβαση ονομασίας
Εάν είστε εξοικειωμένοι με άλλες γλώσσες προγραμματισμού, τότε θα ξέρετε ότι υπάρχουν ορισμένοι κανόνες σχετικά με την ονομασία μεταβλητών. Ομοίως, η Perl έχει τρεις κανόνες για την ονομασία βαθμωτών.
- Όλα τα βαθμωτά ονόματα θα ξεκινούν με $. Είναι εύκολο να θυμάστε να βάλετε πρόθεμα σε κάθε όνομα με $. Σκεφτείτε το ως μια κλίμακα $.
- Όπως η PHP. Μετά τον πρώτο χαρακτήρα $, που είναι ειδικός στο Perl, επιτρέπονται αλφαριθμητικοί χαρακτήρες π.χ. a έως z, A έως Z και 0 έως 9. Επιτρέπεται επίσης ο χαρακτήρας υπογράμμισης. Χρησιμοποιήστε την υπογράμμιση για να χωρίσετε τα ονόματα των μεταβλητών σε δύο λέξεις. "Αλλά ο πρώτος χαρακτήρας δεν μπορεί να είναι αριθμός"
- Παρόλο που οι αριθμοί μπορεί να είναι μέρος του ονόματος, δεν μπορούν να έρχονται αμέσως μετά το $. Αυτό σημαίνει ότι ο πρώτος χαρακτήρας μετά το $ θα είναι είτε ένα αλφάβητο είτε η υπογράμμιση. Αυτοί που προέρχονται από Γ/C++ Το φόντο θα πρέπει να είναι άμεσα σε θέση να αναγνωρίσει την ομοιότητα. Παραδείγματα
Παράδειγμα Perl:
$var; $Var32; $vaRRR43; $name_underscore_23;
Αυτά, ωστόσο, δεν είναι νομικά βαθμωτά ονόματα μεταβλητών.
mohohoh # $ character is missing $ # must be at least one letter $47x # second character must be a letter $variable! # you can't have a ! in a variable name
Ο γενικός κανόνας λέει, όταν η Perl έχει μόνο ένα από κάτι, αυτό είναι βαθμωτό. Τα κλιμάκια μπορούν να διαβαστούν από συσκευές και μπορούμε να τα χρησιμοποιήσουμε στα προγράμματά μας.
Δύο τύποι βαθμωτών τύπων δεδομένων
- Numbers
- Χορδές
Numbers:
Σε αυτόν τον τύπο βαθμωτών δεδομένων θα μπορούσαμε να καθορίσουμε:
- ακέραιοι, απλά είναι ακέραιοι αριθμοί, όπως 2, 0, 534
- αριθμοί κινητής υποδιαστολής, είναι πραγματικοί αριθμοί, όπως 3.14, 6.74, 0.333

Σημείωση: Γενικά, ο διερμηνέας Perl βλέπει ακέραιους αριθμούς σαν αριθμούς κινητής υποδιαστολής. Για παράδειγμα, αν γράψετε 2 στα προγράμματά σας, η Perl θα το δει σαν 2.0000
Ακέραιοι κυριολεκτικά:
Αποτελείται από ένα ή περισσότερα ψηφία, προαιρετικά πριν από ένα συν ή πλην και περιέχουν κάτω παύλες.
Παραδείγματα Perl:
0; -2542; 4865415484645 #this also can be written with underscores (for clarity) : 4_865_415_484_645
Όπως μπορείτε να δείτε - δεν είναι τίποτα το ιδιαίτερο. Αλλά πιστέψτε με, αυτός είναι ο πιο κοινός τύπος βαθμωτών. Είναι παντού.
Κυριολεκτικά κινητής υποδιαστολής:
Αποτελείται από ψηφία, προαιρετικά μείον, υποδιαστολή και εκθέτη.
Παραδείγματα Perl:
3.14; 255.000; 3.6e20; # it's 3.6 times 10 to the 20th -3.6e20; # same as above, but negative -3.6e-20; #it's negative 3.6 times 10 to the -20th -3.6E-20; #we also can use E – this means the same the lowercase version -3.6e-20

Οκταδική, δεκαεξαδική και δυαδική αναπαράσταση:
Είναι εναλλακτικό του δεκαδικού συστήματος. Επιτρέψτε μου να σας δείξω οκταδική, δεκαεξαδική και δυαδική αναπαράσταση. Ένας σύντομος πίνακας παρουσιάζει όλες τις σημαντικές πληροφορίες σχετικά με αυτό το περίεργο στυλ:
| Αναπαράσταση | Βάση | Συνέχεια από |
|---|---|---|
| Οκτάεδρος | 8 | 0 (μηδέν) |
| Δεκαεξαδικό | 16 | 0x |
| Binary | 2 | 0b |
Παραδείγματα Perl:
255; # 255 in decimal notation 0377; # 255 in octal notation 0xff; # 255 in hexadecimal notation 0b11111111; # 255 in binary notation
Όλες αυτές οι τιμές για την Perl σημαίνουν το ίδιο. Η Perl δεν αποθηκεύει τις τιμές στην ίδια μορφή. Θα μετατρέψει εσωτερικά αυτές τις δεκαεξαδικές, δυαδικές, οκταδικές σε δεκαδικές τιμές.
Η ανάθεση είναι η πιο κοινή λειτουργία σε ένα βαθμωτό, και είναι πολύ απλή. Η Perl χρησιμοποιεί για αυτό το σύμβολο ίσου. Παίρνει μια τιμή της έκφρασης από τη δεξιά πλευρά και βάζει αυτήν την τιμή στη μεταβλητή μας.
Ας ρίξουμε μια ματιά σε παραδείγματα:
$size=15; # give $size value of 15 $y = -7.78; # give $y value of -7.78
Επιπλέον, μπορείτε να βάλετε στη μεταβλητή όχι μόνο έναν αριθμό, αλλά και μια έκφραση.
$z = 6 + 12 # give $z value of 18
Χορδές
Χορδές: Είναι επίσης πολύ απλός τύπος βαθμωτών.
Το μέγιστο μήκος μιας συμβολοσειράς στο Perl εξαρτάται από την ποσότητα μνήμης που έχει ο υπολογιστής. Δεν υπάρχει όριο στο μέγεθος της συμβολοσειράς, οποιοσδήποτε αριθμός χαρακτήρων, συμβόλων ή λέξεων μπορεί να αποτελέσει τις συμβολοσειρές σας. Η συντομότερη συμβολοσειρά δεν έχει χαρακτήρες. Το μεγαλύτερο μπορεί να γεμίσει όλη τη μνήμη του συστήματος. Τα προγράμματα Perl μπορούν να γραφτούν εξ ολοκλήρου σε σύνολο χαρακτήρων ASCII 7-bit. Η Perl σας επιτρέπει επίσης να προσθέσετε οποιοδήποτε σύνολο χαρακτήρων 8-bit ή 16-bit. χαρακτήρες που δεν είναι ASCII εντός γραμμάτων συμβολοσειρών. Η Perl έχει προσθέσει επίσης υποστήριξη για το Unicode UTF-8.

Όπως και οι αριθμοί, υπάρχουν δύο διαφορετικοί τύποι συμβολοσειρών:
- Μονά εισαγωγικά κυριολεκτικά συμβολοσειρά
- Double εισαγωγικά κυριολεκτικά συμβολοσειρά
Κυριολεκτικά μονοπαραγωγικά
Τα μεμονωμένα εισαγωγικά χρησιμοποιούνται για να περικλείουν δεδομένα που θέλετε να ληφθούν κυριολεκτικά. Ένα σύντομο παράδειγμα και όλα πρέπει να είναι ξεκάθαρα:
Παραδείγματα Perl:
#!/usr/bin/perl $num = 7; $txt = 'it is $num'; print $txt;
Παραγωγή:
είναι $ αριθμός
Εδώ, λόγω των μεμονωμένων εισαγωγικών, η τιμή του $num δεν έχει ληφθεί και οι κυριολεκτικοί χαρακτήρες '$','n', 'u' & 'm' προστίθενται στην τιμή του $txt
Double-εισαγωγικά κυριολεκτικά συμβολοσειράς
Double Τα εισαγωγικά χρησιμοποιούνται για να περικλείουν δεδομένα που πρέπει να παρεμβάλλονται πριν από την επεξεργασία. Αυτό σημαίνει ότι οι χαρακτήρες και οι μεταβλητές που διαφεύγουν δεν εισάγονται απλώς κυριολεκτικά σε μεταγενέστερες λειτουργίες, αλλά αξιολογούνται επιτόπου. Οι χαρακτήρες διαφυγής μπορούν να χρησιμοποιηθούν για την εισαγωγή νέων γραμμών, καρτελών κ.λπ.
Παραδείγματα Perl:
$num = 7; $txt = "it is $num"; print $txt;
Παραγωγή:
είναι 7
Εδώ λόγω διπλών εισαγωγικών, η τιμή $num προστίθεται στην τιμή $txt
Double-τα εισαγωγικά παρεμβάλλουν μεταβλητές βαθμωτών και πινάκων, αλλά όχι κατακερματισμούς. Από την άλλη πλευρά, μπορείτε να χρησιμοποιήσετε διπλά εισαγωγικά για να παρεμβάλετε φέτες τόσο των πινάκων όσο και των κατακερματισμών.
Μυστήριο \n
Σκεφτείτε το παρακάτω πρόγραμμα
Παραδείγματα Perl:
print "hello \n";
Παραγωγή:
γειά σου
Η Perl δεν εμφανίζει απλώς 'γεια\n', αλλά μόνο 'γεια'. Γιατί; Επειδή το '\n' είναι ένα ειδικό σημάδι και σημαίνει ότι θέλετε να μεταβείτε σε μια νέα γραμμή ενώ εμφανίζετε το κείμενο στο πρόγραμμά σας. εκτύπωση "γεια\n νέα γραμμή"; Επόμενη ερώτηση - υπάρχει κάποιο άλλο ειδικό σημάδι; Ναι είναι! Αλλά μην ανησυχείτε - μόνο μερικά. Ελέγξτε τον παρακάτω πίνακα
| Κατασκευάσει | Περιγραφή |
|---|---|
| \n | νέα γραμμή |
| \r | απόδοση |
| \t | αυτί |
| \f | formfeed |
| \b | backspace |
| \a | κουδούνι |
| \e | διαφυγή |
| \ 007 | οποιαδήποτε οκταδική τιμή ASCII (εδώ, 007 = κουδούνι) |
| \x7f | οποιαδήποτε δεκαεξαδική τιμή (εδώ, 7f = διαγραφή) |
| \\ | ανάστροφη κάθετο |
| \ " | διπλό απόσπασμα |
| \l | πεζό επόμενο γράμμα |
| \L | πεζά όλα τα ακόλουθα γράμματα μέχρι το \E |
| \u | κεφαλαίο επόμενο γράμμα |
| \U | κεφαλαία όλα τα ακόλουθα γράμματα μέχρι το \E |
| \E | Τερματισμός \L, \U |
Ξέρω, δεν υπάρχουν «λίγοι»… Αλλά πιστέψτε με, πρέπει να ξέρετε μόνο
Μεταβλητή συμβολοσειρών
Είναι η ίδια λειτουργία, την οποία βλέπουμε στην αντιστοίχιση αριθμών. Η Perl παίρνει τη συμβολοσειρά μας από τη δεξιά πλευρά του πρόσημου ίσου και βάζει αυτήν τη συμβολοσειρά σε μια μεταβλητή.
Παραδείγματα Perl:
$string = 'tutorial'; # give $string the eight-character string 'tutorial' print $string; $string = $size + 3 ; # give $string the current value of $size plus 3 print $string; $string = $ string * 5; # multiplied $string by 5 print $string;
Παραγωγή:
φροντιστήριο315
Όπως μπορείτε να δείτε, μπορείτε να βάλετε αριθμούς και συμβολοσειρές στις ίδιες μεταβλητές. Δεν υπάρχει κατηγορία μεταβλητών.
Συνένωση συμβολοσειρών (περίοδος):
Ο τελεστής συνένωσης "." ενώνει δύο ή περισσότερες χορδές. Θυμάμαι! Εάν η συμβολοσειρά περιέχει εισαγωγικά, επιστροφές μεταφοράς, ανάστροφες κάθετες, όλοι αυτοί οι ειδικοί χαρακτήρες πρέπει να διαφύγουν με μια ανάστροφη κάθετο.
Παραδείγματα μεταβλητής Perl " ":
#!/usr/bin/perl $a = "Tom is"; $b = "favorite cat"; $c = $a ." mother's ". $b; print $c;
Παραγωγή:
Ο Τομ είναι η αγαπημένη γάτα της μητέρας
Οι χορδές
Το "$a", "$b", συνενώνεται και αποθηκεύεται στο "$c" χρησιμοποιώντας το "." χειριστής.
Στο τέλος…
Μετατροπή μεταξύ Numbers και Χορδές:
Όπως γνωρίζετε, η Perl μετατρέπει αυτόματα τους αριθμούς σε συμβολοσειρά ανάλογα με τις ανάγκες. Πώς ξέρει η Perl τι χρειαζόμαστε αυτή τη στιγμή; Αυτό είναι απλό - όλα εξαρτώνται από τον τελεστή (θα μιλήσουμε για τελεστές αργότερα, τώρα, απλώς αποδεχτείτε ότι υπάρχουν πολλοί τελεστές, διαφορετικοί για αριθμούς και συμβολοσειρές) Εάν ένας τελεστής αναμένει έναν αριθμό, η Perl θα χρησιμοποιήσει την τιμή ως αριθμό . Εάν ένας τελεστής περιμένει μια συμβολοσειρά, η Perl θα χρησιμοποιήσει την τιμή ως συμβολοσειρά. Με άλλα λόγια - δεν χρειάζεται να ανησυχείτε για αυτού του είδους τη μετατροπή. Σύντομο παράδειγμα και όλα πρέπει να είναι ξεκάθαρα:
Παραδείγματα Perl:
$string = "43"; $number = 28; $result = $string + $number; print $result;
Παραγωγή:
71
η τιμή του $string μετατρέπεται σε ακέραιο και προστίθεται στην τιμή του $number.
Το αποτέλεσμα της προσθήκης, 71, εκχωρείται στο $result.
Πεδίο εφαρμογής μιας μεταβλητής – Τροποποιητές πρόσβασης
Μπορούμε να δηλώσουμε ένα βαθμωτό σε οποιοδήποτε σημείο του προγράμματος. Αλλά πρέπει να καθορίσετε έναν τροποποιητή πρόσβασης
Υπάρχουν 3 τύποι τροποποιητών
- my
- τοπικός
- δικός μας
My: Χρησιμοποιώντας αυτό μπορείτε να δηλώσετε οποιαδήποτε μεταβλητή που είναι συγκεκριμένη μέσα στο μπλοκ. δηλαδή μέσα στα σγουρά σιδεράκια.
#!/usr/bin/perl
my $var=5;
if(1)
{
my $var_2 =$var;
}
print $var_2;
Χωρίς έξοδο
Η έξοδος του προγράμματος δεν θα είναι τίποτα!

Στο παραπάνω παράδειγμα, θα δείτε ότι υπάρχουν δύο μεταβλητές που δηλώνονται η μία είναι εντός του μπλοκ if ($var_2) και η άλλη είναι εκτός του μπλοκ If ($var). Η μεταβλητή, η οποία δηλώνεται εκτός του μπλοκ θα είναι προσβάσιμη στο μπλοκ if, αλλά η μεταβλητή που δηλώθηκε μέσα στο μπλοκ if δεν θα είναι προσβάσιμη στο εξωτερικό πρόγραμμα.
Τοπικό: Χρησιμοποιώντας αυτό μπορούμε πραγματικά να κρύψουμε τις ίδιες τιμές μεταβλητής σε διαφορετικές τιμές χωρίς να αλλάξουμε πραγματικά την αρχική τιμή της μεταβλητής, ας υποθέσουμε ότι έχουμε μια μεταβλητή $a για την οποία η τιμή έχει εκχωρηθεί 5, μπορείτε πραγματικά να αλλάξετε την τιμή αυτής της μεταβλητής με δηλώνοντας ξανά την ίδια μεταβλητή χρησιμοποιώντας τοπική λέξη-κλειδί χωρίς να τροποποιήσετε την αρχική τιμή της μεταβλητής που είναι 5. Ας δούμε πώς λειτουργεί αυτό με ένα παράδειγμα.
#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";
Η έξοδος του παραπάνω προγράμματος θα είναι με αυτόν τον τρόπο.
τοπική, $var = 3
καθολική, $var = 5
Με αυτόν τον τρόπο μπορούμε να αλλάξουμε την τιμή της μεταβλητής χωρίς να επηρεάσουμε την αρχική τιμή.
Το δικό μας: Μόλις δηλωθεί μια μεταβλητή με τον τροποποιητή πρόσβασης "our", μπορεί να χρησιμοποιηθεί σε ολόκληρο το πακέτο. Ας υποθέσουμε ότι έχετε την ενότητα Perl ή ένα πακέτο test.pm που έχει μια μεταβλητή που έχει δηλωθεί με το πεδίο εφαρμογής μας. Αυτή η μεταβλητή είναι προσβάσιμη σε οποιαδήποτε δέσμη ενεργειών που θα χρησιμοποιούν αυτό το πακέτο.
Εάν ασχολείστε σοβαρά με τον προγραμματισμό στην Perl, θα πρέπει να ξεκινήσετε το πρόγραμμά σας με αυτό
#!/usr/local/bin/perl
χρήση αυστηρή?
Αυτό θα σας βοηθήσει να γράψετε καλύτερο και καθαρότερο κώδικα. Η "χρήση αυστηρής" ενεργοποιεί την αυστηρή πράξη που θα σας κάνει να δηλώσετε τις μεταβλητές σας με τη λέξη-κλειδί μου.
Αυτή είναι μια καλή πρακτική προγραμματισμού
#!/usr/local/bin/perl use strict; $var = 10; print "$var";
Αποτέλεσμα: Σφάλμα
#!/usr/local/bin/perl use strict; my $var = 10; print "$var";
Παραγωγή:
10
Perl Array
Τι είναι το Perl Array;
Ένας πίνακας είναι ένας ειδικός τύπος μεταβλητής που αποθηκεύει δεδομένα με τη μορφή λίστας. Κάθε στοιχείο μπορεί να προσπελαστεί χρησιμοποιώντας τον αριθμό ευρετηρίου που θα είναι μοναδικός για κάθε στοιχείο. Μπορείτε να αποθηκεύσετε αριθμούς, συμβολοσειρές, κυμαινόμενες τιμές κ.λπ. στον πίνακα σας. Αυτό φαίνεται υπέροχο, Λοιπόν πώς δημιουργούμε έναν πίνακα στο Perl; Στην Perl, μπορείτε να ορίσετε έναν πίνακα χρησιμοποιώντας τον χαρακτήρα '@' ακολουθούμενο από το όνομα που θέλετε να δώσετε. Ας εξετάσουμε τον ορισμό ενός πίνακα στο Perl.
ο @array μου;
Έτσι ορίζουμε έναν πίνακα στο Perl. ίσως σκέφτεστε πώς πρέπει να αποθηκεύουμε δεδομένα σε αυτό. Υπάρχουν διάφοροι τρόποι αποθήκευσης δεδομένων σε έναν πίνακα. Αυτό εξαρτάται από το πώς θα το χρησιμοποιήσετε.
my @array=(a,b,c,d); print @array;
Παραγωγή:
ABCD
Αυτός είναι ένας πίνακας με 4 στοιχεία.
Ο δείκτης πίνακα ξεκινά από το 0 και τελειώνει στο μέγιστο δηλωμένο μέγεθός του, σε αυτήν την περίπτωση, το μέγιστο μέγεθος ευρετηρίου είναι 3.
Παράδειγμα Perl Array
Μπορείτε επίσης να δηλώσετε έναν πίνακα με τον παραπάνω τρόπο. Η μόνη διαφορά είναι ότι αποθηκεύει δεδομένα σε έναν πίνακα θεωρώντας ένα λευκό διάστημα ως οριοθέτη. Εδώ, qw() σημαίνει λέξη εισαγωγικού. Η σημασία αυτής της συνάρτησης είναι να δημιουργήσει μια λίστα λέξεων. Μπορείτε να χρησιμοποιήσετε το qw με πολλούς τρόπους για να δηλώσετε έναν πίνακα.
@array1=qw/a b c d/;
@array2= qw' p q r s';
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;
Παραγωγή:
abcdpqrsvxyz
Ας υποθέσουμε ότι θέλετε να αντιστοιχίσετε μια τιμή στο 5th στοιχείο ενός πίνακα, πώς θα το κάνουμε αυτό.
$array [4] ='e';
Διαδοχικός πίνακας
Οι διαδοχικοί πίνακες είναι αυτοί όπου αποθηκεύετε δεδομένα διαδοχικά. Ας υποθέσουμε ότι θέλετε να αποθηκεύσετε 1-10 αριθμούς ή αλφάβητα az σε έναν πίνακα. Αντί να πληκτρολογείτε όλα τα γράμματα, μπορείτε να δοκιμάσετε κάτι όπως παρακάτω –
@numbers= (1..10); print @numbers; #Prints numbers from 1 to 10;
Παραγωγή:
12345678910
Μέγεθος πίνακα Perl
Έχουμε έναν πίνακα που είναι ήδη διαθέσιμος και δεν ξέρετε ποιο είναι το μέγεθος αυτού του πίνακα, οπότε ποιος είναι ο πιθανός τρόπος να τον βρείτε.
@array= qw/a b c d e/; print $size=scalar (@array);
Μπορούμε να πάρουμε το μέγεθος ενός πίνακα χωρίς να χρησιμοποιήσουμε συναρτήσεις; Ναι μπορούμε.
@array= qw/a b c d e/; print $size=scalar (@array); print "\n"; print $size=$#array + 1; # $#array will print the Max Index of the array, which is 5 in this case
Παραγωγή:
5
5
Δυναμική Συστοιχία
Η παραπάνω μέθοδος δήλωσης πίνακα ονομάζεται στατικές συστοιχίες, όπου γνωρίζετε το μέγεθος ενός πίνακα.
Τι είναι το Dynamic Array;
Οι δυναμικοί πίνακες είναι αυτοί που δηλώνετε χωρίς να προσδιορίσετε καμία τιμή σε αυτούς. Πότε ακριβώς αποθηκεύουμε τιμές σε αυτόν τον πίνακα; Απλά, τα αποθηκεύουμε κατά τη διάρκεια του χρόνου λειτουργίας. Εδώ είναι ένα απλό πρόγραμμα για αυτό.
Θα χρησιμοποιήσουμε ορισμένες ενσωματωμένες συναρτήσεις Perl για την εκτέλεση αυτής της εργασίας.
my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \n”;
# This is a special variable which stores the current value.
}
Παραγωγή:
Αυτό είναι
είδος δυν
μικρόφωνο
rr
y
Η συνάρτηση split χωρίζει το περιεχόμενο της συμβολοσειράς σε έναν πίνακα με βάση τον οριοθέτη που του παρέχεται. Αυτή η συνάρτηση θα εξαλείψει επίσης τον οριοθέτη από τη συμβολοσειρά, σε αυτήν την περίπτωση, είναι 'a'.
Push, Pop, shift, unshift για πίνακες Perl:
Αυτές οι συναρτήσεις μπορούν να χρησιμοποιηθούν στο Perl για προσθήκη/διαγραφή σε στοιχεία πίνακα.
- Perl Push: προσθέτει στοιχείο πίνακα στο τέλος ενός υπάρχοντος πίνακα.
- Perl Pop: αφαιρεί το τελευταίο στοιχείο από έναν πίνακα.
- Perl Shift: αφαιρεί το πρώτο στοιχείο από έναν πίνακα.
- Perl Unshift: προσθέτει ένα στοιχείο στην αρχή ενός πίνακα.

Ας δούμε ένα παράδειγμα όπου μπορούμε να χρησιμοποιήσουμε τις παρακάτω συναρτήσεις.
@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu"); # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri"); # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n"; # remove one element from the last of an array.
shift(@days); # remove one element from the beginning of an array.
print "5th when shift : @days\n";
Παραγωγή:
1η : Δευτ. Τρ. Τετ
2η όταν ώθηση : Δευτ. Τρ. Τετ. Πέμ
3η όταν δεν υπάρχει βάρδια: Παρ Δευτ. Τετ Πεμ
4η όταν pop : Παρ Δευτ. Τρ. Τετ
5η βάρδια : Δευτ. Τρ. Τετ
Perl Hashes
Γιατί χρειαζόμαστε Hash;
Έχουμε ήδη μάθει για τους βαθμωτούς και τους πίνακες σε προηγούμενες ενότητες.
Τι ακριβώς κάνουν τα σκαλοπάτια; Αποθηκεύει μόνο ακέραιους αριθμούς και συμβολοσειρές.
Τι ακριβώς κάνουν οι πίνακες; Είναι μια συλλογή βαθμωτών, όπου έχετε πρόσβαση σε κάθε στοιχείο ενός πίνακα χρησιμοποιώντας δείκτες. Αλλά, είναι καλή ιδέα να χρησιμοποιήσετε έναν πίνακα όταν έχετε εκατοντάδες και χιλιάδες εγγραφές; Θα ξεχάσουμε ποιος δείκτης έχει τι τιμή. Για να ξεπεράσουμε αυτή την κατάσταση έχουμε κάτι σαν το perl hash.
Τι είναι τα Hashes;
Ένας κατακερματισμός μπορεί επίσης να χωρέσει τόσους βαθμωτούς βαθμωτές βαθμίδες όσες χωράει ο πίνακας. Η μόνη διαφορά είναι ότι δεν έχουμε ευρετήριο, αλλά έχουμε κλειδιά και τιμές. Ένας κατακερματισμός μπορεί να δηλωθεί, ξεκινώντας από το % ακολουθούμενο από το όνομα του κατακερματισμού. Ας δούμε ένα παράδειγμα πώς μπορούμε να ορίσουμε έναν κατακερματισμό Perl και πώς μπορούμε να το διαφοροποιήσουμε από τον πίνακα
Εξετάστε ένα παράδειγμα τριών ατόμων και οι ηλικίες τους αντιπροσωπεύονται σε έναν πίνακα.
@array=('Sainath',23,'Krishna',24,'Shruthi',25); #This is how an array looks.
print @array;
Παραγωγή:
Sainath33Krishna24 Shruthi25
Με αυτόν τον τρόπο είναι δύσκολο να γνωρίζουμε μεμονωμένες ηλικίες, καθώς πρέπει να θυμόμαστε και τις δύο θέσεις ευρετηρίου του ονόματος και της ηλικίας όλων των ανθρώπων. Μπορεί να είναι απλό όταν έχεις 3 ονόματα, αλλά όταν έχεις 1000 ή περισσότερα; Ξέρεις την απάντηση.

Αυτό μπορούμε να το ξεπεράσουμε χρησιμοποιώντας ένα hash.
Παράδειγμα κατακερματισμού:
print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.
Παραγωγή:
Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25
Τώρα έχουμε δηλώσει χασίς, υπέροχο!! Πώς, όμως, έχουμε πρόσβαση ή εκτύπωση σε αυτό; Κάθε στοιχείο σε κατακερματισμό θα πρέπει να προσπελαστεί με το συσχετισμένο κλειδί του για το οποίο θα εκχωρηθεί μια τιμή. Έτσι, υπάρχει μια αντιστοίχιση ενός-ένα μεταξύ κάθε κλειδιού και τιμής στον κατακερματισμό.
Για να εκτυπώσετε την ηλικία οποιουδήποτε ατόμου, πρέπει απλώς να θυμάστε το όνομα αυτού του ατόμου.
print $hash{'Krishna'}; # This how we should access a hash. Key enclosed within {}.
Ίσως αναρωτηθήκατε γιατί χρησιμοποίησα το $hash{KeyName}, θυμηθείτε ότι ο κατακερματισμός είναι πάλι μια συλλογή βαθμωτών. Έτσι, μπορούμε να χρησιμοποιήσουμε το $ που αντιπροσωπεύει το βαθμωτό για πρόσβαση σε κάθε στοιχείο κατακερματισμού.

Σημείωση: Κάθε κλειδί σε κατακερματισμό θα πρέπει να είναι μοναδικό, διαφορετικά θα παρακάμψει την τιμή σας, η οποία είχε εκχωρηθεί προηγουμένως.
Πώς μπορούμε να αντιστοιχίσουμε ένα κατακερματισμό σε ένα άλλο κατακερματισμό; Απλό, με τον ίδιο τρόπο όπως κάνουμε για
Μπορούμε επίσης να εκτυπώσουμε ολόκληρο το hash.
%hash=( 'Tom' => 23); %newHash=%hash; # Assigning hash to a new hashprint %newHash; print %newHash;
Παραγωγή:
Tom23
Προσθέστε Perl Hashes
Όπως μπορείτε να δείτε, έχουμε ήδη ένα κατακερματισμό %newHash και τώρα πρέπει να προσθέσουμε περισσότερες καταχωρήσεις σε αυτό.
$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;
Παραγωγή:
Jim25John26Harry27
Κλειδί διαγραφής Perl
Μπορεί να θέλετε να διαγράψετε μια καταχώρηση από έναν κατακερματισμό. Έτσι μπορούμε να το κάνουμε αυτό.
delete $newHash{'Jim'};#This will delete an entry from the hash.
Το Delete είναι μια ενσωματωμένη συνάρτηση της Perl. Εδώ, θα δούμε ένα παράδειγμα εκχώρησης κατακερματισμού σε έναν πίνακα.
@array=%newHash; print "@array";
Σημείωση: Κάθε φορά που εκτυπώνετε έναν κατακερματισμό ή όταν αποθηκεύετε κατακερματισμό σε έναν πίνακα. Η σειρά μπορεί πάντα να διαφέρει. Δεν είναι πάντα το ίδιο.
Μπορούμε να εκχωρήσουμε μόνο κλειδιά ή τιμές ενός κατακερματισμού σε έναν πίνακα.
@arraykeys= keys(%newHash); @arrayvalues=values(%newHash); print "@arraykeys\n"; print "@arrayvalues\n"; # \n to print new line.
Για να αφαιρέσουμε όλες τις καταχωρήσεις στον κατακερματισμό, μπορούμε να αντιστοιχίσουμε απευθείας τον κατακερματισμό σε null.
%newHash=();# Αυτό θα επαναπροσδιορίσει τον κατακερματισμό χωρίς καταχωρήσεις.
Δηλώσεις υπό όρους Perl
Μπορούμε να χρησιμοποιήσουμε δηλώσεις υπό όρους στο Perl. Λοιπόν, τι είναι οι δηλώσεις υπό όρους; Οι δηλώσεις υπό όρους είναι εκείνες όπου ελέγχετε πραγματικά για ορισμένες περιστάσεις που ικανοποιούνται στον κώδικά σας.
Σκεφτείτε ένα παράδειγμα, αγοράζετε μερικά φρούτα και δεν σας αρέσει η τιμή να είναι μεγαλύτερη από 100 δολάρια. Έτσι, ο κανόνας εδώ είναι 100 δολάρια.
Η Perl υποστηρίζει δύο τύπους δηλώσεων υπό όρους. είναι εάν και αν.
Perl If
Εάν το μπλοκ κώδικα θα εκτελεστεί, όταν η συνθήκη είναι αληθής.

my $a=5;
if($a==5)
{
print "The value is $a";
}
Παραγωγή:
5
Perl If Else
Αυτό φαίνεται καλό. Ας σκεφτούμε μια κατάσταση όπου το $a δεν είναι 5.
my $a=10;
if($a==5)
{
print "The values is $a ---PASS";
}
else
{
print "The value is $a ---FAIL";
}
Παραγωγή:
Η τιμή είναι 10 —FAIL
Με αυτόν τον τρόπο μπορούμε να ελέγξουμε μόνο μία συνθήκη τη φορά. Είναι περιορισμός; Όχι, μπορείτε επίσης να ελέγξετε διάφορες συνθήκες χρησιμοποιώντας το if… elif… else.
Perl Else If
my $a=5;
if($a==6)
{
print "Executed If block -- The value is $a";
}
elsif($a==5)
{
print "Executed elsif block --The value is $a";
}
else
{
print "Executed else block – The value is $a";
}
Παραγωγή:
Εκτελέστηκε μπλοκ elif – Η τιμή είναι 5
Στην παραπάνω περίπτωση, το μπλοκ elif θα εκτελεστεί καθώς το $a είναι ίσο με 5.
Θα μπορούσαν να υπάρξουν περιπτώσεις όπου τόσο τα μπλοκ κώδικα if όσο και τα μπλοκ elif θα αποτύχουν. Σε αυτό το σενάριο, το μπλοκ κώδικα else θα εκτελεστεί. Μπορείτε πραγματικά να εξαλείψετε τον έλεγχο κωδικού else εάν δεν σας αρέσει να συμπεριλάβετε.
Perl Nested If
Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε το μπλοκ κώδικα if σε ένα ακόμη μπλοκ κώδικα if.
my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
print "Inside 1st if block";
if($a<5){
print "Inside 2nd if block --- The value is $a";
}
else{
print " Inside 2nd else block --- The value is $a";
}
}
else{
print "Inside 1st else block – The value is $a";
}
Παραγωγή:
Μέσα στο 1ο μπλοκ else – Η τιμή είναι 11
Εκτελέστε τον ίδιο κώδικα αλλάζοντας την τιμή του $a. μπορείτε να μάθετε τα υπόλοιπα.
Perl Εκτός αν
Έχετε ήδη μια ιδέα για το τι συμβαίνει εάν (εάν η συνθήκη είναι αληθής, θα εκτελέσει το μπλοκ κώδικα). Εκτός εάν είναι αντίθετο με το if, εκτός εάν το μπλοκ κώδικα θα εκτελεστεί εάν η συνθήκη είναι ψευδής.
my $a=5;
unless($a==5)
{
print "Inside the unless block --- The value is $a";
}
else
{
print "Inside else block--- The value is $a";
}
Παραγωγή:
Μέσα στο 1ο μπλοκ else – Η τιμή είναι 5
Μαντέψτε ποια θα είναι η έξοδος. Εχεις δίκιο!!!!!. Η έξοδος θα είναι η δήλωση εκτύπωσης του μπλοκ else. Λόγω της συνθήκης στο εκτός αν το μπλοκ κώδικα είναι αληθές, θυμηθείτε το εκτός εάν το μπλοκ θα εκτελεστεί μόνο εάν η συνθήκη είναι ψευδής. Αλλάξτε την τιμή του $a και εκτελέστε τον κώδικα που θα δείτε τη διαφορά.
Perl Χρησιμοποιώντας το if
$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}
Παραγωγή:
Μέσα σε άλλο μπλοκ
Χρησιμοποιώντας εκτός εάν
$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}
Παραγωγή:
Μέσα εκτός αν Μπλοκ
Perl Loops – Δομές Ελέγχου
Η Perl υποστηρίζει δομές ελέγχου παρόμοιες με άλλες γλώσσες προγραμματισμού. Η Perl υποστηρίζει τέσσερις τύπους δομών ελέγχου για, foreach, while και μέχρι. Χρησιμοποιούμε αυτές τις δηλώσεις για να εκτελέσουμε επανειλημμένα κάποιο κώδικα.
Για βρόχο Perl
Για το μπλοκ κώδικα θα εκτελεστεί μέχρι να ικανοποιηθεί η συνθήκη. Ας πάρουμε ένα παράδειγμα του τρόπου δημιουργίας βρόχου Perl σε έναν πίνακα.
my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
print "The array index $count value is $array[$count]";
print "\n";
}
Παραγωγή:
Η τιμή του δείκτη 0 του πίνακα είναι 1
Η τιμή του δείκτη 1 του πίνακα είναι 2
Η τιμή του δείκτη 2 του πίνακα είναι 3
Η τιμή του δείκτη 3 του πίνακα είναι 4
Η τιμή του δείκτη 4 του πίνακα είναι 5
Η τιμή του δείκτη 5 του πίνακα είναι 6
Η τιμή του δείκτη 6 του πίνακα είναι 7
Η τιμή του δείκτη 7 του πίνακα είναι 8
Η τιμή του δείκτη 8 του πίνακα είναι 9
Η τιμή του δείκτη 9 του πίνακα είναι 10
Εδώ, στην έκφραση για (), περιλαμβάνονται πολλές δηλώσεις. Υπάρχει ένα νόημα για καθένα από αυτά.
για ( αρχικοποίηση ; συνθήκη, αύξηση)
Εδώ είναι ένας άλλος τρόπος χρήσης για.
for(1..10)
{
print "$_ n";
print "\n";
}
Παραγωγή:
1n
2n
3n
4n
5n
6n
7n
8n
9n
10n
Perl Foreach
Το για κάθε δήλωση μπορεί να χρησιμοποιηθεί με τον ίδιο τρόπο όπως για; η κύρια διαφορά είναι ότι δεν έχουμε έλεγχο συνθηκών και αύξηση σε αυτό.
Ας πάρουμε το ίδιο παράδειγμα με το foreach perl.
my @array=(1..10);
foreach my $value (@array)
{
print " The value is $value\n";
}
Παραγωγή:
Η τιμή είναι 1
Η τιμή είναι 2
Η τιμή είναι 3
Η τιμή είναι 4
Η τιμή είναι 5
Η τιμή είναι 6
Η τιμή είναι 7
Η τιμή είναι 8
Η τιμή είναι 9
Η τιμή είναι 10
Το Foreach παίρνει κάθε στοιχείο ενός πίνακα και εκχωρεί αυτήν την τιμή στο $var για κάθε επανάληψη. Μπορούμε επίσης να χρησιμοποιήσουμε το $_ για το ίδιο.
my @array=(1..10);
foreach(@array)
{
print " The value is $_ \n"; # This is same as the above code.
}
Παραγωγή:
Η τιμή είναι 1
Η τιμή είναι 2
Η τιμή είναι 3
Η τιμή είναι 4
Η τιμή είναι 5
Η τιμή είναι 6
Η τιμή είναι 7
Η τιμή είναι 8
Η τιμή είναι 9
Η τιμή είναι 10
Αυτό φαίνεται καλό για πρόσβαση σε πίνακες. Τι θα λέγατε για τα Hashes, πώς μπορούμε να αποκτήσουμε κλειδιά και τιμές κατακερματισμού χρησιμοποιώντας το foreach;
Μπορούμε να χρησιμοποιήσουμε το foreach για να αποκτήσουμε πρόσβαση σε κλειδιά και τιμές του κατακερματισμού κάνοντας βρόχο.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}
Παραγωγή:
Γελοιοποίηση
τόμος
Καθίκι
Ίσως αναρωτιέστε, Γιατί χρησιμοποιήσαμε τα κλειδιά στο foreach(). Τα πλήκτρα είναι μια ενσωματωμένη λειτουργία της Perl όπου μπορούμε να έχουμε γρήγορη πρόσβαση στα κλειδιά του κατακερματισμού. Τι θα λέγατε για τις αξίες; Μπορούμε να χρησιμοποιήσουμε τη συνάρτηση τιμών για την πρόσβαση στις τιμές του κατακερματισμού.
my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
print " the value is $value \n";
}
Παραγωγή:
η τιμή είναι 24
η τιμή είναι 23
η τιμή είναι 25
Περλ Ενώ
Ο βρόχος Perl while είναι μια δομή ελέγχου, όπου το μπλοκ κώδικα θα εκτελείται έως ότου η συνθήκη είναι αληθής.
Το μπλοκ κώδικα θα εξέλθει μόνο εάν η συνθήκη είναι ψευδής.
Ας πάρουμε ένα παράδειγμα για τον βρόχο Perl while.

Εδώ υπάρχει ένα πρόβλημα, το οποίο θα απαιτήσει εισαγωγή από τον χρήστη και δεν θα βγει μέχρι τον αριθμό που δίνεται ως '7'.
#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
print "Guess a Number Between 1 and 10 \n ";
$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"
Παραγωγή:
Μαντέψτε έναν αριθμό μεταξύ 1 και 10
9
Μαντέψτε έναν αριθμό μεταξύ 1 και 10
5
Μαντέψτε έναν αριθμό μεταξύ 1 και 10
7
Μαντέψατε τον τυχερό αριθμό 7
Στο παραπάνω παράδειγμα, η συνθήκη while δεν θα είναι αληθής εάν εισάγουμε είσοδο διαφορετική από το '7'.
Εάν δείτε πώς λειτουργεί το while εδώ, το μπλοκ κώδικα θα εκτελεστεί μόνο εάν η συνθήκη σε λίγο είναι αληθής.
Perl do-while
Ο βρόχος Do while θα εκτελεστεί τουλάχιστον μία φορά ακόμα και αν η συνθήκη στην ενότητα while είναι ψευδής.
Ας πάρουμε το ίδιο παράδειγμα χρησιμοποιώντας το do while.
$guru99 = 10;
do {
print "$guru99 \n";
$guru99--;
}
while ($guru99 >= 1);
print "Now value is less than 1";
Παραγωγή:
10
9
8
7
6
5
4
3
2
1
Τώρα η τιμή είναι μικρότερη από 1
Perl μέχρι
Έως ότου το μπλοκ κώδικα είναι παρόμοιο με το εκτός εάν υπάρχει μια δήλωση υπό όρους. Εδώ, το μπλοκ κώδικα θα εκτελεστεί μόνο εάν η συνθήκη μέχρι το μπλοκ είναι ψευδής.
Ας πάρουμε το ίδιο παράδειγμα που χρησιμοποιήσαμε για λίγο.
Εδώ υπάρχει ένα πρόβλημα, το οποίο θα απαιτήσει εισαγωγή από τον χρήστη και δεν θα βγει μέχρι να δοθεί το όνομα διαφορετικό από το 'sai'.
print "Enter any name \n";
my $name=<STDIN>;
chomp($name);
until($name ne 'sai')
{
print "Enter any name \n";
$name=<STDIN>;
chomp($name);
}
Παραγωγή:
Εισαγάγετε οποιοδήποτε όνομα sai
Το Perl κάνει μέχρι:
Το Do μέχρι μπορεί να χρησιμοποιηθεί μόνο όταν χρειαζόμαστε μια συνθήκη να είναι ψευδής και θα πρέπει να εκτελεστεί τουλάχιστον μία φορά.
print "Enter any name \n";
my $name=<STDIN>;
chomp($name);
do
{
print "Enter any name \n";
$name=<STDIN>;
chomp($name);
}until($name ne 'sai');
Παραγωγή:
Εισαγάγετε οποιοδήποτε όνομα Howard
Εισαγάγετε οποιοδήποτε όνομα Sheldon
Εισαγάγετε οποιοδήποτε όνομα sai
Εκτελέστε τους κωδικούς while, do-while, μέχρι και do-til για να δείτε τη διαφορά.
Perl OperaTor
Τι είναι Operaβραχώδης κορυφή?
OperaΤα tors στη γλώσσα του υπολογιστή υποδεικνύουν μια ενέργεια που μπορεί να εκτελεστεί σε κάποιο σύνολο μεταβλητών ή τιμών που μπορεί να κατανοήσει ο υπολογιστής. Η Perl έχει ενσωματώσει τα περισσότερα από τα Operators από τη γλώσσα C. Η Perl έχει πολλούς τελεστές σε σύγκριση με άλλες γλώσσες προγραμματισμού. OperaΟι tors κατηγοριοποιούνται σε Αριθμητικούς, Λογικούς, σχεσιακούς και τελεστές ανάθεσης.
Αριθμητική Operators:
Οι αριθμητικοί τελεστές είναι εκείνοι που μπορούν να χρησιμοποιηθούν για την εκτέλεση ορισμένων βασικών μαθηματικών πράξεων. Αυτοί οι αριθμητικοί τελεστές είναι δυαδικοί τελεστές όπου χρειαζόμαστε δύο ορίσματα για να εκτελέσουμε μια βασική πράξη. Μπορούμε επίσης να χρησιμοποιήσουμε unary τελεστές για άλλες βασικές λειτουργίες. μπορείτε να δείτε τη διαφορά στα παραδείγματα παρακάτω.
| OperaTor | Περιγραφή | Παράδειγμα |
|---|---|---|
|
+ |
Λειτουργία πρόσθεσης που χρησιμοποιείται για την προσθήκη δύο τιμών ή μεταβλητών κρατώντας αξίες |
$x=5+6; # ή $y=6; $z=$x+$y; |
|
- |
Ο τελεστής αφαίρεσης χρησιμοποιείται για την αφαίρεση δύο τιμών ή μεταβλητών που κατέχουν τιμές |
$x=6-5; # ή $y=6; $z=$x-$y; |
|
* |
Ο τελεστής πολλαπλασιασμού χρησιμοποιείται για τον πολλαπλασιασμό δύο τιμών ή μεταβλητών που κρατούν τιμές |
$x=6*5; # ή $y=6; $z=$x*$y; |
|
/ |
Ο τελεστής διαίρεσης χρησιμοποιείται για τη διαίρεση δύο τιμών ή μεταβλητών που κατέχουν τιμές |
$x=36/6; # ή $y=6; $z=$x/$y; |
|
** |
Ο εκθετικός τελεστής που χρησιμοποιείται για παροχή εκθέτη και λήψη της τιμής. Πχ: 22 = 43 = 27 |
$x=5**5; # ή $x=4; $y=2; $z=$x**$y; |
|
% |
Ο τελεστής μονάδας χρησιμοποιείται για τη λήψη της υπενθύμισης κατά τη διαίρεση δύο τιμών ή μεταβλητών που κρατούν τιμές |
$x=5%2; # ή $x=10; $y=2; $z=$x % $y; |
|
++ |
Μοναδικός τελεστής πρόσθεσης στην τιμή αύξησης μιας μεταβλητής κατά 1 |
$x=5; $x++; Or ++$x; |
|
- |
Ο τελεστής Unary Αφαίρεση μειώνει την τιμή μιας μεταβλητής κατά 1 |
$x=5; $x–; # μείωση ανάρτησης Or –$x;# προ μείωση |
Παράδειγμα για να ολοκληρώσετε όλες τις παραπάνω λειτουργίες.
my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");
Παραγωγή:
Η πρόσθεση του 10 και του 2 είναι 12
Το δευτερεύον των 10 και 2 είναι 8
Το Mul of 10 και 2 είναι 20
Το Div των 10 και 2 είναι 5
Η λήξη των 10 και 2 είναι 100
Mod των 10 και 2 είναι 0
Εκχώρηση Operators:
Οι τελεστές εκχώρησης απλώς εκχωρούν τιμές σε μεταβλητές, αλλά υπάρχει ένα ακόμη πράγμα που πρέπει να θυμόμαστε εδώ, οι τελεστές εκχώρησης θα εκτελούν επίσης αριθμητικές πράξεις και θα εκχωρούν τη νέα τιμή στην ίδια μεταβλητή στην οποία εκτελείται η πράξη.
| OperaTor | Περιγραφή | Παράδειγμα |
|---|---|---|
|
+= |
Ο τελεστής πρόσθεσης χρησιμοποιείται για την προσθήκη και την εκχώρηση της τιμής στην ίδια μεταβλητή |
$x=4; $x+=10; |
|
-= |
Ο τελεστής αφαίρεσης χρησιμοποιείται για την αφαίρεση και την ανάθεση της τιμής στην ίδια μεταβλητή |
$x=4; $x-=10; |
|
*= |
Ο τελεστής πολλαπλασιασμού χρησιμοποιείται για την προσθήκη και την εκχώρηση της τιμής στην ίδια μεταβλητή |
$x=4; $x*=10; |
|
/= |
Ο τελεστής διαίρεσης χρησιμοποιείται για τη διαίρεση και την ανάθεση της τιμής στην ίδια μεταβλητή |
$x=4; $x/=10; |
|
** = |
Εκθετικός τελεστής που χρησιμοποιείται για τη λήψη εκθέτη και την ανάθεση της τιμής στην ίδια μεταβλητή |
$x=4; $x**=10; |
|
%= |
Ο τελεστής Modulus χρησιμοποιείται για τη λήψη υπενθύμισης κατά τη διαίρεση και την ανάθεση της τιμής στην ίδια μεταβλητή |
$x=10; $x%=4; |
Παράδειγμα για να ολοκληρώσετε όλες τις παραπάνω λειτουργίες.
my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");
Παραγωγή:
Προσθήκη = 15
Υπο= 10
Μουλ = 50
Div = 10
Λογική και Σχεσιακή Operators:
Η Perl χρησιμοποιεί λογικούς τελεστές για να συγκρίνει αριθμούς και συμβολοσειρές. Τις περισσότερες φορές οι λογικοί τελεστές χρησιμοποιούνται σε δηλώσεις υπό όρους.
Λογική και Σχεσιακή Operators στο Perl
| OperaTor | Περιγραφή |
|---|---|
|
==ή εξ |
Operator χρησιμοποιείται για να ελέγξει αν και οι δύο μεταβλητές είναι ίσες |
|
!=Ή νε |
Operator χρησιμοποιείται για να ελέγξει αν και οι δύο μεταβλητές δεν είναι ίσες |
|
> ή gt |
Operator χρησιμοποιείται για να ελέγξει αν Το Α είναι μεγαλύτερο από το Β |
|
<or lt |
Operator χρησιμοποιείται για να ελέγξει αν Το A είναι μικρότερο από το B |
|
>=ή γε |
Operator χρησιμοποιείται για να ελέγξει αν Το Α είναι μεγαλύτερο ή ίσο του Β |
|
<=ή λε |
Operator χρησιμοποιείται για να ελέγξει αν Το Α είναι μικρότερο ή ίσο του Β |
|
|| ή ή |
Operator που χρησιμοποιείται για να ελέγξει ότι το Α ή το Β έχει τιμή |
|
&&ή και |
Operator που χρησιμοποιείται για να ελέγξει ότι το Α και το Β έχουν τιμή |
Ας πάρουμε ένα παράδειγμα όπου μπορούμε να εξηγήσουμε όλα τα σενάρια.
my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
Παραγωγή:
Σωστό — ίσο με 5 και 5
Σωστό - όχι ίσο με 6 και 7
Σωστό — 7 μεγαλύτερο από 6
Σωστό - 6 λιγότερο από 7
Σωστό - 6 λιγότερο από 7
Σωστό — 7 μεγαλύτερο από 6
Μπορείτε να δείτε παραδείγματα λογικών τελεστών σε επόμενες ενότητες.
Ειδικές μεταβλητές Perl
Τι είναι το Perl Special Variables;
Ειδικές μεταβλητές στο Perl είναι εκείνες που έχουν κάποιο προκαθορισμένο νόημα. Αυτές οι μεταβλητές υποδηλώνονται είτε με αληθινά σύμβολα Όνομα είτε με Στίξη. Έχουμε μια ειδική μεταβλητή για όλες τις μεταβλητές που υποστηρίζονται από την Perl, όπως βαθμωτές ειδικές μεταβλητές, ειδικές μεταβλητές Array, ειδικές μεταβλητές κατακερματισμού. Οι περισσότερες από τις ειδικές μεταβλητές που χρησιμοποιούμε είναι βαθμωτών.
Όταν θέλουμε να χρησιμοποιήσουμε την ειδική μεταβλητή με το όνομά της, τότε πρέπει να φορτώσουμε μια ενότητα Perl 'use English', για να πούμε ρητά τον διερμηνέα Perl ότι πρόκειται να χρησιμοποιήσουμε ειδικές μεταβλητές χρησιμοποιώντας το όνομά της.
Βαθμωτές ειδικές μεταβλητές
| Μεταβλητός | Περιγραφή |
|---|---|
|
$_$ARG |
Αυτή είναι η προεπιλεγμένη μεταβλητή που αποθηκεύει τις τρέχουσες τιμές. |
|
$0 ή $PROGRAM_NAME |
Αποθηκεύει το όνομα αρχείου του σεναρίου Perl. |
|
$/ |
Το διαχωριστικό εγγραφών εισόδου, έχει μια προεπιλεγμένη τιμή '\n' που είναι χαρακτήρας νέας γραμμής |
|
$. |
Κρατάει τον τρέχοντα αριθμό γραμμής του αρχείου που διαβάζεται |
|
$, |
Διαχωριστικό πεδίου εξόδου, αυτό χρησιμοποιείται κυρίως από την πρόταση print(). Η προεπιλεγμένη τιμή αυτού είναι 0, μπορούμε να αλλάξουμε την τιμή αυτής της μεταβλητής. |
|
$\ |
Διαχωριστής εγγραφών εξόδου, η τιμή αυτής της μεταβλητής θα είναι κενή. μπορούμε να εκχωρήσουμε οποιαδήποτε τιμή σε αυτό, η οποία θα χρησιμοποιηθεί από την πρόταση print() κατά την εκτύπωση της εξόδου. |
|
$# |
Αυτή η μεταβλητή χρησιμοποιείται για τη μορφή εξόδου κατά την εκτύπωση αριθμών. |
|
$%$FORMAT_PAGE_NUMBER |
Θα κρατήσει τον τρέχοντα αριθμό σελίδας του αρχείου που διαβάστηκε. |
|
$=$FORMAT_LINES_PER_PAGE |
Θα κρατήσει το τρέχον μήκος σελίδας του αρχείου που διαβάζεται. |
|
$-$FORMAT_LINES_LEFT |
Κρατάει την τιμή του αριθμού των γραμμών που απομένουν για εκτύπωση από τη σελίδα. |
|
$~$FORMAT_NAME |
Format Name: Κρατάει τη μορφή της τρέχουσας επιλεγμένης εξόδου από προεπιλογή το όνομα λαβής αρχείου. |
|
$^$FORMAT_TOP_NAME |
Κρατάει την τιμή της μορφής επικεφαλίδας του προγράμματος χειρισμού αρχείων, από προεπιλογή η τιμή θα είναι _TOP ακολουθούμενη από το όνομα χειρισμού αρχείου. |
|
$|$OUTPUT_AUTOFLUSH |
Η προεπιλογή είναι μηδέν. Αυτό χρησιμοποιείται για την έκπλυση του buffer εξόδου μετά από κάθε εγγραφή() ή print(). |
|
$$ |
Θα κρατήσει τον αριθμό διεργασίας που εκτελείται του διερμηνέα Perl. |
|
$? |
Κωδικός κατάστασης: Σωλήνας και κλήση συστήματος. Η κατάσταση επιστροφής της εντολής που εκτελέστηκε. |
|
$&$MATCH |
Χρησιμοποιείται σε κανονικές εκφράσεις, αυτό θα περιέχει μια συμβολοσειρά της τελευταίας επιτυχημένης αντιστοίχισης μοτίβου. |
|
$`$PREMATCH |
Χρησιμοποιείται σε κανονικές εκφράσεις, αυτό θα κρατά τη συμβολοσειρά πριν από την τελευταία επιτυχημένη αντιστοίχιση μοτίβου. |
|
$'$POSTMATCH |
Χρησιμοποιείται σε κανονικές εκφράσεις, αυτό θα περιέχει μια συμβολοσειρά που ακολουθείται από την τελευταία επιτυχημένη αντιστοίχιση μοτίβου. |
|
$+$LAST_PAREN_MATCH |
Κρατάει τη συμβολοσειρά της τελευταίας αγκύλης που αντιστοιχεί στην τελευταία αναζήτηση μοτίβου. |
|
$ |
$1, $2, $3…. Διατηρεί τις τιμές του μοτίβου που ταιριάζουν με τη σειρά. |
|
$[ |
Πρώτος ευρετήριο: Πίνακας, μια υποσυμβολοσειρά. |
|
$] |
Μια έκδοση του Perl. |
|
$ " |
Το διαχωριστικό που χρησιμοποιείται για τα στοιχεία της λίστας, από προεπιλογή είναι ένα κενό διάστημα. |
|
$; |
Διαχωριστής συνδρομητών που χρησιμοποιείται σε πολυδιάστατους πίνακες |
|
$! |
Σε αριθμητικό πλαίσιο, εκτυπώνει τον αριθμό σφάλματος. Στο πλαίσιο συμβολοσειράς, εκτυπώστε το σφάλμα. |
|
$@ |
Θα κρατήσει τις πληροφορίες συντακτικού σφάλματος, που χρησιμοποιείται όταν χρησιμοποιείται eval(). |
|
$< |
Κρατάει το πραγματικό UID (user id) της διαδικασίας που εκτελεί το σενάριο. |
|
$> |
Διατηρεί το αποτελεσματικό UID της διαδικασίας που εκτελεί το σενάριο. |
|
$( |
Διατηρεί το πραγματικό GID (αναγνωριστικό ομάδας) της διαδικασίας που εκτελεί το σενάριο. |
|
$) |
Διατηρεί το αποτελεσματικό GID της διαδικασίας που εκτελεί το σενάριο. |
|
$^D$ΑΝΤΙΜΕΤΩΠΙΣΗ ΣΦΑΛΜΑΤΩΝ |
Διατηρεί την τρέχουσα τιμή των σημαιών εντοπισμού σφαλμάτων. |
|
$^C |
Διατηρεί την τρέχουσα τιμή της σημαίας όταν χρησιμοποιείται ο διακόπτης γραμμής εντολών –c. |
|
$^F |
Ο μέγιστος περιγραφέας αρχείου συστήματος, από προεπιλογή, έχει οριστεί σε 2 |
|
$^I$INPLACE_EDIT |
Κρατάει την τιμή του διακόπτη γραμμής εντολών –i. |
|
$^M |
Το Special Memory Pool μπορεί να χρησιμοποιηθεί όταν το σενάριο Perl πεθαίνει με σφάλμα μνήμης εκτός λειτουργίας. |
|
$^O$OSNAME |
OperaΟι πληροφορίες συστήματος ting αποθηκεύονται. 'Linux' για συστήματα Linux, 'mswin32' για Windows συστήματα. |
|
$^T$BASETIME |
Η ώρα που εκτελούνται τα σενάρια σε δευτερόλεπτα. |
|
$^W$ΠΡΟΕΙΔΟΠΟΙΗΣΗ |
Η τρέχουσα τιμή του διακόπτη γραμμής εντολών –w. Προειδοποιητικός διακόπτης. |
|
$ARGV |
Όνομα του τρέχοντος αρχείου, όταν χρησιμοποιείται <>. |
Ειδικές μεταβλητές πίνακα:
| Μεταβλητός | Περιγραφή |
|---|---|
|
@INC |
Διατηρεί μια λίστα διαδρομών, όπου μπορούν να αναζητηθούν λειτουργικές μονάδες ή σενάρια βιβλιοθήκης Perl κατά την εκτέλεση του τρέχοντος σεναρίου. Αυτό το @INC χρησιμοποιείται από τη χρήση και απαιτεί δηλώσεις για την εξέταση αυτών των διαδρομών για λειτουργικές μονάδες βιβλιοθήκης. |
|
@ARGV |
Αποθηκεύει τα ορίσματα της γραμμής εντολών που έχουν περάσει. |
|
@_ |
Χρησιμοποιείται σε υπορουτίνες, ενώ περνά τις παραμέτρους στις υπορουτίνες. |
|
@F |
Αυτή είναι η συστοιχία στην οποία αποθηκεύονται οι γραμμές εισόδου κατά την αυτόματη διαίρεση –a (χρησιμοποιείται διακόπτης γραμμής εντολών). |
Ειδικές μεταβλητές κατακερματισμού:
| Μεταβλητός | Περιγραφή |
|---|---|
|
%INC |
Το όνομα του αρχείου θα είναι τα κλειδιά. Οι τιμές θα είναι η διαδρομή προς αυτά τα αρχεία. Χρησιμοποιείται από do, use and demand. |
|
%ENV |
Περιβαλλοντικές μεταβλητές συστήματος. |
|
%SIG |
Signals χειριστής. |
Κανονική έκφραση Perl
Τι είναι η κανονική έκφραση;
Η τυπική έκφραση Perl είναι αρκετά ισχυρή για την αντιστοίχιση των μοτίβων συμβολοσειρών σε μια δήλωση ή μια ομάδα εντολών. Οι τυπικές εκφράσεις χρησιμοποιούνται κυρίως στην ανάλυση κειμένου, την αντιστοίχιση μοτίβων και πολλά άλλα με βάση την απαίτηση. Έχουμε ορισμένους τελεστές, οι οποίοι χρησιμοποιούνται ειδικά με δέσμευση μοτίβων τυπικής έκφρασης =~ και !~, Αυτοί είναι τελεστές δοκιμής και ανάθεσης.
Συνήθης έκφραση Operaκορμοί
Συνήθης έκφραση Operators στο Perl
- Perl Match — m//
- Αντικατάσταση Perl – s///
- Perl Transliterate – tr///
Πριν προχωρήσουμε περαιτέρω, πρέπει να γνωρίζουμε λίγα πράγματα για την κανονική έκφραση. Υπάρχουν ορισμένα πράγματα όπως χαρακτήρες Meta, χαρακτήρες μπαλαντέρ στη σύνταξη Perl Regex.
| Char | Νόημα |
|---|---|
|
\ |
Ειδική ή προσφορά |
|
* |
Αντιστοιχίστε 0 ή περισσότερους χαρακτήρες |
|
+ |
Αντιστοιχίστε 1 ή περισσότερους χαρακτήρες |
|
? |
Ταίριασμα 0 ή 1 χαρακτήρα |
|
| |
Μπορεί να χρησιμοποιηθεί για να ταιριάζει με εναλλακτικά μοτίβα |
|
() |
Χρησιμοποιείται για την αποθήκευση του αντιστοιχισμένου μοτίβου |
|
[] |
Το σύνολο χαρακτήρων μπορεί να περάσει. Χρησιμοποιείται συγκεκριμένα για αριθμητικά και αλφάβητα. |
|
{} |
Χρησιμοποιείται για την παροχή του χρόνου που μπορεί να πραγματοποιηθεί ο αγώνας. |
|
^ |
Έναρξη της χορδής |
|
$ |
Τέλος χορδής |
|
\w |
Χρησιμοποιείται για την αντιστοίχιση ενός μεμονωμένου χαρακτήρα ή λέξης που μπορεί να είναι αλφαριθμητική συμπεριλαμβανομένου του "_" |
|
\W |
Ταιριάξτε οτιδήποτε άλλο εκτός από αλφαριθμητικό |
|
\s |
Χρησιμοποιείται για αντιστοίχιση κενών διαστημάτων |
|
\S |
Αντιστοιχίστε οτιδήποτε άλλο εκτός από κενό διάστημα |
|
\d |
Ταίριασμα αριθμών. Όχι δεκαδικές και αρνητικές τιμές |
|
\D |
Ταιριάξτε οτιδήποτε άλλο εκτός από αριθμούς. |
|
\t |
Αντιστοίχιση χώρου καρτέλας |
|
\n |
Αντιστοίχιση νέας γραμμής |
Τα παραπάνω είναι το σύνολο των χαρακτήρων που μπορούν να χρησιμοποιηθούν κατά την αντιστοίχιση μοτίβων.
Ας δούμε μερικά παραδείγματα.
Σκεφτείτε μια κατάσταση όπου ο χρήστης παρέχει κάποια είσοδο κατά την εκτέλεση του σεναρίου και θέλουμε να ελέγξουμε αν ο χρήστης εισήγαγε κάποιο όνομα ως είσοδο ή όχι. Πρέπει να γράψουμε μια σύνταξη τυπικής έκφρασης για να εξαγάγουμε το όνομά σας και να εκτυπώσουμε την ίδια.
my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
print "Found Pattern";
}
else
{
print "unable to find the pattern";
}
Παραγωγή:
Βρέθηκε μοτίβο
Εδώ, έχουμε γράψει την τυπική έκφραση ως /.*(Guru99).*/.* που ταιριάζει με όλους τους χαρακτήρες σε μια συμβολοσειρά. ΕΝΑ '.' στο perl regex, η αντιστοίχιση αναφέρεται σε οποιονδήποτε χαρακτήρα συμπεριλαμβανομένου του διαστήματος.
Ας δούμε πώς ακριβώς μπορούμε να κατασκευάσουμε ένα Regex.
Εξετάστε ένα παράδειγμα μιας σειράς πολλαπλών λέξεων και ψηφίων και ειδικών συμβόλων όπως αυτό "Γεια σε όλους, αυτός είναι ο αριθμός μου: +91-99298373639";
Regex : /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i
Διάστημα λέξης χώρος λέξης χώρος λέξης χώρος λέξης χώρος λέξης χώρος λέξης ειδικός χαρακτήρας : κενό ειδικός χαρακτήρας+ψηφία ειδικός χαρακτήρας –ψηφία.
Ταίριασμα Perl Operaκορμοί
Οι τελεστές αντιστοίχισης χρησιμοποιούνται για την αντιστοίχιση μιας συμβολοσειράς σε κάποια πρόταση ή σε μια μεταβλητή.
my $var="Hello this is perl";
if($var=~m/perl/)
{
print "true";
}
else
{
print "False";
}
Παραγωγή:
ναι
Αυτός ο μικρός κώδικας θα εκτυπώσει "true", καθώς η αντιστοίχιση του μοτίβου perl προσδιορίζει τη συμβολοσειρά σε μια μεταβλητή. Βασικά, η Perl αναζητά το κείμενο που παρέχεται στο // σε όλη τη συμβολοσειρά, ακόμα κι αν βρει σε ένα σημείο, θα επιστρέψει 'true'. Το μοτίβο μπορεί να βρίσκεται οπουδήποτε στη μεταβλητή. Μπορούμε να δοκιμάσουμε να αντικαταστήσουμε το =~ με !~ για να δούμε τη διαφορά μεταξύ αυτών των δύο τελεστών.
Αντικατάσταση Perl OperaTor
Αυτός ο τελεστής μπορεί να χρησιμοποιηθεί για αναζήτηση και αντικατάσταση οποιουδήποτε χαρακτήρα είτε με null είτε με κάποιον άλλο χαρακτήρα.
my $a="Hello how are you"; $a=~s/hello/cello/gi; print $a;
Παραγωγή:
βιολοντσέλο πώς είσαι
Σημείωση: Μπορούμε πραγματικά να χρησιμοποιήσουμε οποιαδήποτε συμβολοσειρά αντιστοίχισης μοτίβων όπως κάναμε νωρίτερα και σε αυτόν τον τελεστή αντικατάστασης. Εδώ χρησιμοποιήσαμε τα 'gi', g-globally, i-ignore case.
Μετάφραση Perl OperaTor
Αυτό είναι παρόμοιο με το Substitution, αλλά δεν χρησιμοποιεί κανονικές εκφράσεις perl, αλλά μπορούμε να μεταβιβάσουμε απευθείας την τιμή ή μια λέξη που θέλουμε να αντικαταστήσουμε.
my $a="Hello how are you"; $a=~tr/hello/cello/; print $a;
Παραγωγή:
Γεια σου αγελάδα είσαι
I/O αρχείου Perl
Η Perl σχεδιάστηκε για να χειρίζεται τα αρχεία και τις λειτουργίες I/O αποτελεσματικά. Το κύριο πλεονέκτημα της Perl είναι η ανάλυση αρχείων και ο χειρισμός των αρχείων. Υπάρχουν πολλές ενσωματωμένες λειτουργίες και τελεστές που χρησιμοποιούνται κατά τη διαχείριση αρχείων στο Perl.
Βασικά, οι λειτουργίες αρχείων που εκτελούνται με την Perl γίνονται χρησιμοποιώντας το FILEHANDLE. Πρέπει να ορίσουμε αυτό το FILEHANDLE κατά το άνοιγμα ενός αρχείου είτε για ανάγνωση είτε για εγγραφή.
Σε αυτό το σενάριο Perl σεναρίου, θα μάθετε-
Perl Open αρχείο
Μπορούμε να ανοίξουμε ένα αρχείο χρησιμοποιώντας τη συνάρτηση open() που είναι διαθέσιμη στο Perl.
open(FILEHANDLE, "filename or complete path of the file");
Τώρα ανοίξαμε ένα αρχείο, τώρα τίθεται ένα ερώτημα. Είναι για ανάγνωση ή γραφή;
Αρχείο Perl Read & Perl Write αρχείο
Η Perl έχει ορισμένες λειτουργίες, οι οποίες πρέπει να χρησιμοποιηθούν για ανάγνωση, εγγραφή ή προσθήκη αρχείου.
Read – open(my $fh,"<filename or complete path of the file"); Write – open(my $fh,">filename or complete path of the file"); Append – open(my $fh,">>filename or complete path of the file");
Μερικά παραδείγματα για την ανάγνωση ενός αρχείου:

Σκεφτείτε ότι έχουμε ένα αρχείο perl με όνομα file.txt και έχει λίγες γραμμές κειμένου σε αυτό. Πρέπει να ανοίξουμε αυτό το αρχείο και να εκτυπώσουμε το ίδιο.
open(FH,"<file.txt");
while(<FH>) # Looping the file contents using the FH as a filehandle.
{
print "$_";
}
close FH;
or
open(FH,"<file.txt");
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
print "$_";
}
close FH;
Αυτό θα εκτυπώσει το περιεχόμενο του αρχείου στην οθόνη εξόδου.
Τώρα, θα γράψουμε ένα πρόγραμμα για τη δημιουργία και εγγραφή δεδομένων σε ένα αρχείο perl.

open(FH,">test.txt"); my $var=<>; print FH $var; close FH;
Αυτό θα γράψει την είσοδο που παρέχεται κατά τη διάρκεια του χρόνου εκτέλεσης και θα δημιουργήσει ένα αρχείο test.txt που θα έχει είσοδο.
Ο παραπάνω τρόπος θα προσπαθεί πάντα να δημιουργήσει ένα αρχείο με το όνομα test.txt και γράφει την είσοδο στο αρχείο. θα γράψουμε το ίδιο για να προσαρτήσουμε το αρχείο.

open(FH,">>test.txt"); my $var=<>; print FH $var; close FH;
| Λειτουργίες | Περιγραφή |
|---|---|
|
< |
Διάβασε |
|
+< |
Διαβάζει και γράφει |
|
> |
Δημιουργεί, γράφει και περικόπτει |
|
+> |
Διαβάστε, γράψτε, δημιουργήστε και περικόψτε |
|
>> |
Γράφει, προσαρτά και δημιουργεί |
|
+>> |
Διαβάστε, γράψτε, προσαρτήστε και δημιουργήστε |
Τώρα που πρέπει να δούμε πώς να διαβάζουμε, να γράφουμε και να προσθέτουμε αρχεία χρησιμοποιώντας βασικά παραδείγματα.
Θα δούμε μερικά ακόμη παραδείγματα και άλλες λειτουργίες που βοηθούν στην κατανόηση περισσότερων αρχείων.
Περλ Τελ
Αυτή η μέθοδος θα επιστρέψει την τρέχουσα θέση του FILEHANDLER σε byte, εάν ορίζεται διαφορετικά, θα θεωρήσει την τελευταία γραμμή ως θέση.
open(FH, "test.pl");
while(<FH>)
{
$a=tell FH;
print "$a";
}
Perl Seek
Η λειτουργία αναζήτησης είναι παρόμοια με την κλήση συστήματος fseek. Αυτή η μέθοδος χρησιμοποιείται για την τοποθέτηση του δείκτη αρχείου σε μια συγκεκριμένη θέση, καθορίζοντας τα byte που ακολουθούνται είτε από την αρχή του δείκτη αρχείου είτε από το τέλος του δείκτη αρχείου.
seek FH, bytes, WHENCE;
WHENCE είναι η θέση του δείκτη του αρχείου για έναρξη. Το μηδέν θα το ορίσει από την αρχή του αρχείου.
Παράδειγμα: Αφήστε το input.txt να έχει ορισμένα δεδομένα όπως "Γεια σας, αυτός είναι ο κόσμος μου".
open FH, '+<','input.txt'; seek FH, 5, 0; # This will start reading data after 5 bytes. $/ = undef; $out = <FH>; print $out; close FH;
Παραγωγή:
αυτος ΕΙΝΑΙ Ο ΚΟΣΜΟΣ μου
Perl Αποσύνδεση
Η αποσύνδεση χρησιμοποιείται για τη διαγραφή του αρχείου.
unlink("filename or complete file path");
Χειρισμός καταλόγων:
Μπορούμε επίσης να χειριστούμε καταλόγους μέσω των οποίων μπορούμε να χειριστούμε πολλά αρχεία.
Ας δούμε πώς να ανοίξετε έναν κατάλογο. Μπορούμε να χρησιμοποιήσουμε τις μεθόδους opendir και readdir.
opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.
while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
print "$_\n";
}
closedir(DIR); #used to close the directory handler.
or
opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
print "$_\n";
}
closedir(DIR);
Αυτό θα εκτυπώσει όλα τα διαθέσιμα αρχεία σε αυτόν τον κατάλογο.
Δοκιμές αρχείων Perl και η σημασία τους
|
-r |
Για να ελέγξετε εάν το αρχείο/κατάλογος είναι αναγνώσιμο από τον τρέχοντα χρήστη/ομάδα |
|
-w |
Για να ελέγξετε εάν το αρχείο/κατάλογος είναι εγγράψιμο από τον τρέχοντα χρήστη/ομάδα |
|
-x |
Για να ελέγξετε εάν το Αρχείο/Κατάλογος είναι εκτελέσιμο από τον τρέχοντα χρήστη/ομάδα |
|
-o |
Για να ελέγξετε εάν το αρχείο/κατάλογος ανήκει στον τρέχοντα χρήστη |
|
-R |
Για να ελέγξετε εάν το αρχείο/κατάλογος είναι αναγνώσιμο από αυτόν τον πραγματικό χρήστη/ομάδα |
|
-W |
Για να ελέγξετε εάν το αρχείο/κατάλογος είναι εγγράψιμο από αυτόν τον πραγματικό χρήστη/ομάδα |
|
-X |
Για να ελέγξετε εάν το αρχείο/κατάλογος είναι εκτελέσιμο από αυτόν τον πραγματικό χρήστη/ομάδα |
|
-O |
Για να ελέγξετε εάν το αρχείο/κατάλογος ανήκει σε αυτόν τον πραγματικό χρήστη |
|
-e |
Για να ελέγξετε αν υπάρχει όνομα αρχείου/καταλόγου |
|
-z |
Για να ελέγξετε εάν το αρχείο υπάρχει και έχει μηδενικό μέγεθος (πάντα ψευδής για τους καταλόγους) |
|
-f |
Για να ελέγξετε αν το Entry είναι απλό αρχείο |
|
-d |
Για να ελέγξετε αν το Entry είναι κατάλογος |
|
-l |
Για να ελέγξετε αν η Είσοδος είναι συμβολικός σύνδεσμος |
|
-S |
Για να ελέγξετε αν η είσοδος είναι πρίζα |
|
-p |
Για να ελέγξετε εάν το Entry είναι ένας ονοματοποιημένος σωλήνας (ένα "FIFO") |
|
-b |
Για να ελέγξετε εάν το Entry είναι ένα ειδικό αρχείο μπλοκ (όπως ένας προσαρτώμενος δίσκος) |
|
-c |
Για να ελέγξετε εάν το Entry είναι ένα ειδικό αρχείο χαρακτήρων (όπως μια συσκευή I/O) |
|
-u |
Για να ελέγξετε εάν το Αρχείο ή ο κατάλογος είναι setuid |
|
-g |
Για να ελέγξετε εάν το Αρχείο ή ο κατάλογος είναι setgid |
|
-k |
Για να ελέγξετε εάν το αρχείο ή ο κατάλογος έχει οριστεί το sticky bit |
|
-t |
Το δεδομένο αρχείο χειρισμού είναι ένα TTY (καθώς από τη συνάρτηση συστήματος isatty(), τα ονόματα αρχείων δεν μπορούν να ελεγχθούν από αυτήν τη δοκιμή) |
|
-T |
Για να ελέγξετε αν το Αρχείο μοιάζει με αρχείο "κειμένου". |
|
-B |
Για να ελέγξετε αν το Αρχείο μοιάζει με "δυαδικό" αρχείο |
|
-M |
Για να ελέγξετε την ηλικία τροποποίησης (μετρούμενη σε ημέρες) του αρχείου |
|
-A |
Για να ελέγξετε την ηλικία πρόσβασης (μετρούμενη σε ημέρες) του αρχείου |
|
-C |
Για να ελέγξετε την ηλικία τροποποίησης Inode (μετρούμενη σε ημέρες) του αρχείου |
Υπορουτίνα Perl
Τι είναι η υπορουτίνα;
Υπορουτίνες είναι παρόμοιες με τις συναρτήσεις σε άλλες γλώσσες προγραμματισμού. Έχουμε ήδη χρησιμοποιήσει κάποιες ενσωματωμένες λειτουργίες όπως print, chomp, chop κ.λπ. Μπορούμε να γράψουμε τις δικές μας υπορουτίνες σε Perl. Αυτές οι υπορουτίνες μπορούν να γραφτούν οπουδήποτε στο πρόγραμμα. Είναι προτιμότερο να τοποθετούνται οι υπορουτίνες είτε στην αρχή είτε στο τέλος του κώδικα.

Παράδειγμα υπορουτίνων
sub subroutine_name
{
Statements…; # this is how typical subroutines look like.
}
Τώρα που ξέρουμε πώς να γράφουμε μια υπορουτίνα, πώς έχουμε πρόσβαση σε αυτήν;
Πρέπει να αποκτήσουμε πρόσβαση ή να καλέσουμε μια υπορουτίνα χρησιμοποιώντας το όνομα της υπορουτίνας με το σύμβολο "&".
sub display
{
print "this is a subroutine";
}
display(); # This is how we call a subroutine
Διαβίβαση παραμέτρων Perl & ορισμάτων Perl
Οι υπορουτίνες ή η συνάρτηση perl γράφονται για να τοποθετήσουν τον επαναχρησιμοποιήσιμο κώδικα σε αυτό. Το μεγαλύτερο μέρος του επαναχρησιμοποιήσιμου κώδικα απαιτεί τη μετάδοση παραμέτρων στην υπορουτίνα. Εδώ, θα μάθουμε πώς μπορούμε να μεταφέρουμε ορίσματα στην υπορουτίνα.
sub display
{
my $var=@_; # @_ is a special variable which stores the list of arguments passed.
print "$var is the value passed";
}
display(2,3,4); #this is how we need to pass the arguments.
Παραγωγή:
3 είναι η τιμή που πέρασε
Το @_ είναι μια ειδική μεταβλητή πίνακα που αποθηκεύει τα ορίσματα που διαβιβάζονται στις υπορουτίνες.
Perl Shift
Μπορούμε επίσης να χρησιμοποιήσουμε λέξη κλειδί "shift" που μετατοπίζει μία παράμετρο τη φορά σε μια μεταβλητή ή $_[0],$_[1]… που είναι ένα μεμονωμένο στοιχείο του πίνακα @_
sub display
{
my $var=shift;
print "$var is passed";
}
display("hello");
Παραγωγή:
γεια πέρασε
Οι υπορουτίνες χρησιμοποιούνται συνήθως στον αντικειμενοστραφή προγραμματισμό και επίσης σε μέρη όπου μπορεί να έχετε περισσότερο επαναχρησιμοποιήσιμο κώδικα για να τοποθετήσετε.
Η κύρια λειτουργία των υπορουτίνων είναι να κάνουν κάποια εργασία και να επιστρέφουν το αποτέλεσμα του επαναχρησιμοποιήσιμου κώδικα.

Μπορούμε να επιστρέψουμε μια τιμή από την υπορουτίνα χρησιμοποιώντας τη λέξη-κλειδί επιστροφής.
sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;
Παραγωγή:
11
Το $result θα κρατά την τιμή των $a και $b που προστέθηκαν.
Μπορούμε επίσης να περάσουμε κατακερματισμούς και πίνακα απευθείας στην υπορουτίνα.
sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);
Παραγωγή:
1a2b
Μπορούμε επίσης να επιστρέψουμε έναν κατακερματισμό ή έναν πίνακα.
sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;
Παραγωγή:
Μέσα στην υπο-ρουτίνα2b1aΜετά την κλήση υπο-ρουτίνας2b1a
Μορφή Perl
Η Perl έχει έναν μηχανισμό με τον οποίο μπορούμε να δημιουργήσουμε αναφορές. Χρησιμοποιώντας αυτή τη δυνατότητα, μπορούμε να κάνουμε αναφορές ακριβώς με τον τρόπο που θέλουμε κατά την εκτύπωση στην οθόνη Εξόδου ή σε ένα αρχείο. Μια απλή μορφή μπορεί να γραφτεί χρησιμοποιώντας συναρτήσεις printf ή sprintf που είναι διαθέσιμες στο Perl.
printf "%05d\n", 30;
Αυτό θα περιλαμβάνει πρώτα μηδενικά μπροστά από τον αριθμό 30, κάνοντας μια συνολική καταμέτρηση ψηφίων έως το 5. Το ίδιο μπορεί να χρησιμοποιηθεί για το sprintf.
sprintf "%05d\n", 30; # This will print the same as printf.
Χρησιμοποιώντας printf και sprintf, μπορούμε να αποκτήσουμε τις περισσότερες από τις μορφές Perl. Στην περίπτωση των εκθέσεων, θα είναι δύσκολο να εφαρμοστεί.
================================================== =========================
Όνομα Διεύθυνση Ηλικία Τηλέφωνο
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232
Τα παραπάνω είναι ένα παράδειγμα αναφοράς που πρέπει να εκτυπώσουμε με τον ίδιο τρόπο στο Perl. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας τα perl printf και perl sprintf. Μπορεί να εφαρμοστεί αποτελεσματικά χρησιμοποιώντας τη μορφή.
Μια μορφή μπορεί να δηλωθεί με τον παρακάτω τρόπο.
format FORMATNAME=FORMATLIST.
Εδώ, θα χρησιμοποιήσουμε μια συγκεκριμένη μέθοδο εγγραφής για να εκτυπώσουμε τα δεδομένα στην οθόνη εξόδου ή στο αρχείο.
| Σύμβολο | Περιγραφή |
|---|---|
|
@ |
Χρησιμοποιείται για να αναπαραστήσει την αρχή του κατόχου πεδίου |
|
> |
Δεξιά στοίχιση κειμένου |
|
< |
Αριστερά στοίχιση κειμένου |
|
| |
Στοίχιση στο κέντρο |
|
# |
Αριθμητικό εάν παρέχονται πολλά #. Υποτίθεται ως σχόλιο εάν παρέχεται μόνο # |
|
. |
Δεκαδικό σημείο |
|
^ |
Η θήκη έναρξης πεδίου μπορεί επίσης να χρησιμοποιηθεί για πολλαπλές γραμμές και επίσης για αναδίπλωση λέξεων |
|
~ |
Η γραμμή πρέπει να είναι κενή εάν η μεταβλητή είναι κενή |
|
@* |
Πολλαπλές γραμμές. |
($name,$addr,$age,$phone)=("krishna","chennai","24","929309242");
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232");
write;
format STDOUT_TOP=
===============================================================
NAME ADDRESS AGE PHONE
===============================================================
.
format STDOUT=
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<<
$name, $addr, $age, $phone
.
Εκτελέστε τον κώδικα για να δείτε την έξοδο.
Χρησιμοποιούμε το σύμβολο @ για να καθορίσουμε την αρχή του κατόχου πεδίου ή της συμβολοσειράς, «<» κάθε χαρακτήρα.
Χρησιμοποιούμε STDOUT για να εκτυπώσουμε στην τυπική έξοδο. Μπορούμε να το αλλάξουμε σε πρόγραμμα χειρισμού αρχείων που χρησιμοποιούμε για την εγγραφή δεδομένων στο αρχείο.
open(REPORT,">test.txt");
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232");
write REPORT;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232");
write REPORT;
format REPORT_TOP=
===============================================================
NAME ADDRESS AGE PHONE
===============================================================
.
format REPORT=
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<<
$name, $addr, $age, $phone
Μπορούμε να αντικαταστήσουμε το '<' σε '>' ή '|' για να αλλάξετε τη στοίχιση του κειμένου. Το STDOUT_TOP χρησιμοποιείται για τη σχεδίαση της κεφαλίδας της μορφής. Μπορούμε επίσης να χρησιμοποιήσουμε το ίδιο με το πρόγραμμα χειρισμού αρχείων χρησιμοποιώντας το FH_TOP (το FH είναι ο χειριστής αρχείων). Αυτό θα εξάγει τη μορφή στο αρχείο που εργαζόμαστε επί.
Πρότυπα κωδικοποίησης Perl
Κάθε προγραμματιστής θα έχει τη δική του αίσθηση να γράφει τον κώδικα χρησιμοποιώντας ορισμένα πρότυπα. Αυτά τα πρότυπα θα πρέπει να είναι αρκετά γνωστά ώστε οι άλλοι προγραμματιστές να μπορούν να κατανοήσουν και να υποστηρίξουν σωστά τον κώδικα.
Πρότυπα κωδικοποίησης σε Perl
Η σύνταξη κώδικα είναι απλή και εύκολη. Το πρόβλημα προκύπτει όταν χρειάζεται να διατηρηθεί σε μεταγενέστερα στάδια. Κατά τη σύνταξη του κώδικα πρέπει να τηρούνται οι κατάλληλες οδηγίες και τα πρότυπα κωδικοποίησης. Η Perl ορίζει επίσης ορισμένα πρότυπα που θα είναι χρήσιμα για τους προγραμματιστές να γράφουν κώδικα. Συνιστάται η φόρτωση «αυστηρής» και «μονάδας προειδοποιήσεων» κατά τη σύνταξη του κώδικα. Κάθε μία από αυτές τις ενότητες έχει τη δική της σημασία. Το Strict θα μας κάνει να δηλώσουμε τη μεταβλητή πριν από τη χρήση και επίσης θα πει εάν υπάρχει κάποια απλή λέξη στον κώδικά σας. Η ενότητα προειδοποιήσεων μπορεί εναλλακτικά να χρησιμοποιηθεί περνώντας την επιλογή '-w' στον διερμηνέα Perl στο shebang. Οι προειδοποιήσεις θα εκτυπωθούν στην οθόνη εξόδου.
#!/usr/bin/perl –w
Παρακάτω είναι μερικές λίστες προτύπων.
- Χρησιμοποιήστε την ενότητα «αυστηρή» και «προειδοποιήσεις».
- Καταργήστε τη μεταβλητή που δεν χρησιμοποιείται.
- Τα ονόματα των μεταβλητών πρέπει να είναι κατανοητά από άλλους χρήστες. Π.χ.: $name, @fileData κ.λπ.
- Απαιτείται τεκμηρίωση κατά την κωδικοποίηση ενός σεναρίου.
- Μην κάνετε σκληρό κώδικα καμίας τιμής, αλλά προσπαθήστε να τις ανακτήσετε δυναμικά ή ζητήστε από τον χρήστη να τις εισάγει κατά τη διάρκεια του χρόνου εκτέλεσης. (Διαδρομή αρχείων, Ονόματα αρχείων).
- Μεγιστοποιήστε την επαναχρησιμοποίηση του κώδικα. Προσπαθήστε να βάλετε τον επαναχρησιμοποιήσιμο κώδικα σε υπορουτίνες.
- Πρέπει να δίνονται τα πλήρη ονόματα για τις υπορουτίνες.
- Οι υπορουτίνες πρέπει να γράφονται με κατάλληλα σχόλια και τεκμηρίωση.
- Να αρχικοποιείτε πάντα τις μεταβλητές.
- Ελέγχετε πάντα τους κωδικούς επιστροφής για κλήσεις συστήματος. Το άνοιγμα ενός αρχείου μπορεί να συμβεί ή να μην συμβεί, έχοντας έναν κωδικό επιστροφής εδώ θα εμφανιστεί η κατάσταση σφάλματος εάν το αρχείο δεν υπάρχει.
Π.χ.: ανοιχτό(FH,
- Η υπορουτίνα πρέπει πάντα να επιστρέφει μια τιμή.
- Ανοίξτε σγουρά στην ίδια γραμμή.
- Το Single line BLOCK μπορεί να τοποθετηθεί σε μία γραμμή με σγουρά.
- Χρησιμοποιήστε ετικέτες κατά τη διάρκεια των LOOPS, θα ήταν εύκολο να βγείτε από το βρόχο όποτε είναι απαραίτητο.
- Χρησιμοποιήστε υπογράμμιση ενώ οι μεγάλες φράσεις λέξεων γράφονται ως όνομα μεταβλητής ή υπορουτίνα.
- Προσπαθήστε να χρησιμοποιήσετε απλό regex κατά την κωδικοποίηση.
Τέλειο παράδειγμα με πρότυπα κωδικοποίησης:
#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl
use strict;
use warnings;
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>)
{
print $line;
} # Looping file handler to print data
Διαχείριση σφαλμάτων Perl
Τι είναι η Εξαίρεση;
Εξαίρεση είναι ένα συμβάν που συμβαίνει κατά την εκτέλεση του προγράμματος και το οποίο θα αναστείλει ή θα τερματίσει το πρόγραμμά σας.
Χειρισμός σφαλμάτων
Ο χειρισμός σφαλμάτων είναι κάτι που κάθε προγραμματιστής πρέπει να προσέχει κατά τον προγραμματισμό. Η Perl παρέχει επίσης τεχνικές διαχείρισης σφαλμάτων με τις οποίες μπορούμε να παγιδεύσουμε το σφάλμα και να το χειριστούμε ανάλογα.
Διαχείριση σφαλμάτων στο Perl
Υπάρχουν πολλοί τρόποι για να ελέγξετε για σφάλματα στο πρόγραμμα. Πρέπει να εξετάσουμε τους κωδικούς επιστροφής της συνάρτησης που χρησιμοποιούμε κώδικα. Εάν είμαστε σε θέση να χειριστούμε σωστά αυτούς τους κωδικούς επιστροφής, τότε το μεγαλύτερο μέρος του χειρισμού σφαλμάτων μπορεί να επιτευχθεί.
Τι θα επιστρέψει σε περίπτωση κλήσεων συστήματος;
Στην περίπτωση κλήσεων συστήματος, η κατάσταση επιστροφής θα αποθηκευτεί σε δύο ειδικές μεταβλητές $? Και $!
$! – Αυτό θα εντοπίσει τον αριθμό σφάλματος ή τον αριθμό σφάλματος που σχετίζεται με το μήνυμα σφάλματος.
$; – Αυτό θα κρατήσει τη συνάρτηση system() κατάστασης επιστροφής.
Χρησιμοποιώντας τελεστή Perl ή Logical
Μπορούμε να χρησιμοποιήσουμε λογικό ή τελεστή για χειρισμό σφαλμάτων κατά τη χρήση κλήσεων συστήματος.
ex:
open(FH,"<test.txt");
Αυτό θα ανοίξει το αρχείο σε λειτουργία ανάγνωσης εάν το αρχείο υπάρχει.
Τι γίνεται αν λείπει το αρχείο;
open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists.
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR
Perl Eval
Η λειτουργία Eval μπορεί να χειριστεί μοιραία σφάλματα, σφάλματα χρόνου μεταγλώττισης, σφάλματα χρόνου εκτέλεσης και εκείνα τα σφάλματα που τερματίζουν τον κώδικά σας σε κάποια χρονική στιγμή.
Η συνάρτηση Perl Eval μπορεί να έχει ένα μπλοκ κώδικα ή μια έκφραση. Ο Έβαλς θεωρεί οτιδήποτε τοποθετείται σε αυτό ως χορδή.
Εξετάστε μια κατάσταση κλήσης μιας υπορουτίνας που δεν ορίζεται στο σενάριο. Σε αυτήν την περίπτωση, το σενάριο τερματίζεται δηλώνοντας "ακαθόριστη υπορουτίνα &XYZ, αυτό το σφάλμα μπορεί να αντιμετωπιστεί στη συνάρτηση eval.
Υπάρχουν πολλές χρήσεις του μπλοκ Evals. Μια τέτοια χρήση είναι όταν θέλουμε να φορτώσουμε τη μονάδα που είναι συγκεκριμένη για το λειτουργικό σύστημα κατά τη διάρκεια του χρόνου εκτέλεσης.
Π.χ.: Η διαίρεση με το μηδέν προκαλεί μοιραίο σφάλμα. Για να το χειριστούμε αυτό μπορούμε να τοποθετήσουμε τον κώδικα στο μπλοκ evals.
$a=5;
$b=0;
eval
{
'$result=$a/$b';
}
if($@)
{
print "$@"; # All the error codes returned by evals will get stored in $@.
}
Παραγωγή:
σφάλμα σύνταξης στη γραμμή 8 C:\Users\XYZ\Text.pl, κοντά στο ")
{“
Η εκτέλεση του C:\Users\XYZ\Text.pl ματαιώθηκε λόγω σφαλμάτων μεταγλώττισης.
Παράδειγμα: eval χρησιμοποιώντας δήλωση perl die.
sub test
{
die "Dieing in sub test \n";
}
eval
{
test();
};
print "Caught : $@\n";
Παραγωγή:
Πιάστηκε : Πεθαίνει σε δευτερεύουσα δοκιμή
Χρησιμοποιώντας το Perl Try
Η Perl δεν υποστηρίζει τα blocks try, catch και τελικά κώδικα όπως άλλες γλώσσες προγραμματισμού. Μπορούμε ακόμα να τα χρησιμοποιήσουμε φορτώνοντας μια εξωτερική μονάδα Perl.
χρησιμοποιήστε Try::Tiny;
Χρησιμοποιώντας αυτό μπορούμε να τοποθετήσουμε τον κωδικό σας στο μπλοκ δοκιμής και να εντοπίσουμε το σφάλμα στο μπλοκ προειδοποίησης.
Στη θέση του $@ που χρησιμοποιείται στο eval Try::Το Tiny χρησιμοποιεί το $_.
# χειρισμός σφαλμάτων με χειριστή catch
try
{
die "Die now";
}
catch
{
warn "caught error: $_"; # not $@
};
Χρησιμοποιώντας τέλος.
my $y;
try
{
die 'foo'
}
finally
{
$y = 'bar'
};
try
{
die 'Die now'
}
catch
{
warn "Returned from die: $_"
}
finally
{
$y = 'gone'
};
Παραγωγή:
foo στη γραμμή 4 C:\Users\XYZ\Text.pl.
Μπορούμε να χρησιμοποιήσουμε το try, catch και τέλος με αυτόν τον τρόπο.
δοκιμάστε { # statement }
πιάστε {# δήλωση }
τελικά { # statement };
Or
try
{
# statement
}
finally
{
# statement
};
Παραγωγή:
Or
try
{
# statement
}
finally
{
# statement
}
catch
{
# statement
};
Παραγωγή:
Προγραμματισμός Perl Socket
Τι είναι η πρίζα;

Η υποδοχή είναι ένα μέσο μέσω του οποίου δύο υπολογιστές μπορούν να αλληλεπιδράσουν σε ένα δίκτυο χρησιμοποιώντας τη διεύθυνση δικτύου και τις θύρες.
Ας υποθέσουμε ότι το Α (Διακομιστής) και το Β (Πελάτης) είναι δύο συστήματα, τα οποία πρέπει να αλληλεπιδρούν μεταξύ τους χρησιμοποιώντας Sockets για την εκτέλεση ορισμένων προγραμμάτων.
Για να το εφαρμόσουμε αυτό πρέπει να δημιουργήσουμε υποδοχές και στο Α (Διακομιστής) και στο Β (Πελάτης), το Α θα είναι στην κατάσταση λήψης και το Β θα είναι στην κατάσταση αποστολής.
Α (Διακομιστής):
Εδώ, ο διακομιστής επιθυμεί να λάβει μια σύνδεση από τον B (Πελάτης) και να εκτελέσει ορισμένες εργασίες και να στείλει το αποτέλεσμα πίσω στον Β (Πελάτης). Όταν εκτελούμε τον κώδικα, το λειτουργικό σύστημα στο A προσπαθεί να δημιουργήσει μια υποδοχή και δεσμεύει μια θύρα σε αυτήν την υποδοχή. Στη συνέχεια θα ακούσει από τον αποστολέα που είναι ο Β.
Β (Πελάτης).
Εδώ, ο πελάτης επιθυμεί να στείλει κάποιο πρόγραμμα από το σύστημά του στον Α (Διακομιστή) για κάποια επεξεργασία. Όταν εκτελούμε τον κώδικα, το λειτουργικό σύστημα στο Β προσπαθεί να δημιουργήσει μια υποδοχή για επικοινωνία με τον Α (Διακομιστής), ο Β πρέπει να καθορίσει τη διεύθυνση IP και τον αριθμό θύρας του Α στην οποία ο Β θέλει να συνδεθεί.
Εάν αυτό πάει καλά, και τα δύο συστήματα θα αλληλεπιδράσουν για να ανταλλάξουν τις πληροφορίες μέσω μιας θύρας. Η Perl υποστηρίζει επίσης προγραμματισμό υποδοχών.
Η Perl έχει ένα εγγενές API μέσω του οποίου μπορούν να υλοποιηθούν οι υποδοχές. Για να το κάνουμε εύκολο, υπάρχουν πολλές μονάδες CPAN με τις οποίες γράφουμε προγράμματα υποδοχής.
Λειτουργίες διακομιστή:
- Δημιουργία Socket
- Σύνδεση υποδοχής με διεύθυνση και θύρα
- Ακούστε την υποδοχή σε αυτήν τη διεύθυνση θύρας
- Αποδεχτείτε τις συνδέσεις πελάτη που προσπαθεί να συνδεθεί χρησιμοποιώντας τη θύρα και την IP του διακομιστή
- Εκτελέστε λειτουργίες
Πελάτης Operations:
- Δημιουργία Socket
- Συνδεθείτε στον διακομιστή χρησιμοποιώντας τη διεύθυνση θύρας του
- Εκτελέστε λειτουργίες

socket.io
Αυτή είναι μια ενότητα για προγραμματισμό υποδοχών, η οποία βασίζεται στον αντικειμενοστραφή προγραμματισμό. Αυτή η μονάδα δεν υποστηρίζει τον τύπο δικτύου INET που χρησιμοποιείται σε δίκτυα.
IO:: Υποδοχή::INET:
Αυτή η ενότητα υποστηρίζει τον τομέα INET και βασίζεται σε υποδοχές IO::Sockets. Όλες οι μέθοδοι που είναι διαθέσιμες στο IO::Sockets κληρονομούνται στη μονάδα INET.
Πελάτης και διακομιστής που χρησιμοποιούν πρωτόκολλο TCP:
Το TCP είναι ένα πρωτόκολλο προσανατολισμένο στη σύνδεση. θα χρησιμοποιήσουμε αυτό το πρωτόκολλο για προγραμματισμό υποδοχών.
Πριν προχωρήσουμε περαιτέρω, ας δούμε πώς μπορούμε να δημιουργήσουμε ένα αντικείμενο για την ενότητα IO::Socket::INET και να δημιουργήσουμε μια υποδοχή.
$socket = IO::Socket::INET->new(PeerPort => 45787, PeerAddr => inet_ntoa(INADDR_BROADCAST), Proto => udp,LocalAddr => 'localhost',Broadcast => 1 ) or die "Can't create socket and bind it : $@n";
Η νέα μέθοδος στη μονάδα IO::Socket::INET δέχεται έναν κατακερματισμό ως παράμετρο εισόδου στην υπορουτίνα. Αυτός ο κατακερματισμός είναι προκαθορισμένος και πρέπει απλώς να παρέχουμε τις τιμές στα κλειδιά που θέλουμε να χρησιμοποιήσουμε. Υπάρχει μια λίστα με τα κλειδιά που χρησιμοποιούνται από αυτόν τον κατακερματισμό.
|
PeerAddr |
Διεύθυνση απομακρυσμένου κεντρικού υπολογιστή |
|
PeerHost |
Συνώνυμο του PeerAddr |
|
PeerPort |
Απομακρυσμένη θύρα ή υπηρεσία |
|
LocalAddr |
Διεύθυνση σύνδεσης τοπικού κεντρικού υπολογιστή |
|
Localhost |
Συνώνυμο του LocalAddr |
|
LocalPort |
Θύρα σύνδεσης τοπικού κεντρικού υπολογιστή |
|
Πρωτο |
Όνομα πρωτοκόλλου (ή αριθμός) |
|
Χαρακτηριστικά |
τύπος Socket |
|
Άκουσε |
Μέγεθος ουράς για ακρόαση |
|
ReuseAddr |
Ρυθμίστε το SO_REUSEADDR πριν από τη δέσμευση |
|
Επαναχρησιμοποίηση |
Ρυθμίστε το SO_REUSEADDR πριν από τη δέσμευση |
|
ReusePort |
Ορίστε SO_REUSEPORT πριν από τη δέσμευση |
|
Αναμετάδοση |
Ρυθμίστε το SO_BROADCAST πριν από τη δέσμευση |
|
Χρονικό όριο |
Τιμή χρονικού ορίου για διάφορες λειτουργίες |
|
MultiHomed |
Δοκιμάστε όλες τις διευθύνσεις για κεντρικούς υπολογιστές πολλαπλών κατοικιών |
|
κλείδωμα |
Προσδιορίστε εάν η σύνδεση θα είναι σε λειτουργία αποκλεισμού |
Server.pl
use IO::Socket;
use strict;
use warnings;
my $socket = new IO::Socket::INET (
LocalHost => 'localhost',
LocalPort => '45655',
Proto => 'tcp',
Listen => 1,
Reuse => 1,
);
die "Could not create socket: $!n" unless $socket;
print "Waiting for the client to send datan";
my $new_socket = $socket->accept();
while(<$new_socket>) {
print $_;
}
close($socket);
Client.pl
use strict; use warnings; use IO::Socket; my $socket = new IO::Socket::INET ( PeerAddr => 'localhost', PeerPort => '45655', Proto => 'tcp', ); die "Could not create socket: $!n" unless $socket; print $socket "Hello this is socket connection!n"; close($socket);
Σημείωση:
Στον προγραμματισμό υποδοχών, θα πρέπει να εκτελέσουμε πρώτα το Server.pl και μετά το client.pl ξεχωριστά σε διαφορετικές γραμμές εντολών εάν εκτελούμε σε τοπικό κεντρικό υπολογιστή.
Τι είναι οι μονάδες και τα πακέτα Perl
Οι ενότητες και τα πακέτα συνδέονται στενά μεταξύ τους και είναι ανεξάρτητα. Πακέτο: Ένα πακέτο Perl είναι επίσης γνωστό ως χώρος ονομάτων και έχει όλες τις μοναδικές μεταβλητές που χρησιμοποιούνται όπως κατακερματισμοί, πίνακες, βαθμωτές και υπορουτίνες. Module: Το Module είναι μια συλλογή επαναχρησιμοποιήσιμου κώδικα, όπου γράφουμε υπορουτίνες σε αυτό. Αυτές οι μονάδες μπορούν να φορτωθούν σε προγράμματα Perl για να κάνουν χρήση των υπορουτίνων που είναι γραμμένες σε αυτές τις ενότητες.
Τι είναι οι μονάδες Perl;
Οι τυπικές μονάδες θα εγκατασταθούν κατά την εγκατάσταση της Perl σε οποιοδήποτε σύστημα. CPAN: Περιεκτική Perl Archive Network – Ένα παγκόσμιο αποθετήριο μονάδων Perl. Οι δικές μας προσαρμοσμένες μονάδες Perl που μπορούν να γραφτούν από εμάς. Βασικά, μια λειτουργική μονάδα όταν φορτωθεί σε οποιοδήποτε σενάριο θα εξάγει όλες τις καθολικές μεταβλητές και τις υπορουτίνες της. Αυτές οι υπορουτίνες μπορούν να καλούν απευθείας σαν να είχαν δηλωθεί στο ίδιο το σενάριο. Οι μονάδες Perl μπορούν να γραφτούν με επέκταση .pm στο όνομα αρχείου Ex : Foo.pm. Μια ενότητα μπορεί να γραφτεί χρησιμοποιώντας το 'package Foo' στην αρχή του προγράμματος.
Βασική ενότητα Perl:
#!/usr/bin/perl
package Arithmetic;
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
Χωρίς έξοδο
Για να χρησιμοποιήσουμε αυτήν την ενότητα Perl, πρέπει να την τοποθετήσουμε στον τρέχοντα κατάλογο που λειτουργεί.
Μπορούμε να φορτώσουμε μια λειτουργική μονάδα Perl χρησιμοποιώντας την απαιτούμενη ή τη χρήση οπουδήποτε στον κώδικα. Η κύρια διαφορά μεταξύ απαίτησης και χρήσης είναι η απαίτηση φορτωμένης μονάδας κατά τη διάρκεια του χρόνου εκτέλεσης και η χρήση φορτίων κατά τη διάρκεια του χρόνου μεταγλώττισης.
#!/usr/bin/perl require Arithmetic; print Arithmetic::add(5,6); print Arithmetic:: subtract (5,6);
Εδώ, στο παραπάνω παράδειγμα, έχουμε πρόσβαση στις υπορουτίνες χρησιμοποιώντας πλήρως πιστοποιημένο όνομα μονάδας.
Μπορούμε επίσης να έχουμε πρόσβαση στο πακέτο χρησιμοποιώντας «χρήση αριθμητικής».
Εξαγωγέας:
Αυτή η ενότητα έχει μια προεπιλεγμένη λειτουργία μεθόδων εισαγωγής.
#!/usr/bin/perl
package Arithmetic;
require Exporter;
@ISA= qw(Exporter); # This is basically for implementing inheritance.
@EXPORT = qw(add);
@EXPORT_OK = qw(subtract);
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
Ο πίνακας @EXPORT μπορεί να χρησιμοποιηθεί για τη μετάδοση μιας λίστας μεταβλητών και υπορουτίνων που από προεπιλογή θα εξαχθούν στον καλούντα της Μονάδας.
Ο πίνακας @EXPORT_OK μπορεί να χρησιμοποιηθεί για τη μετάδοση μιας λίστας μεταβλητών και υπορουτίνων που θα εξαχθούν βάσει ζήτησης, όπου ο χρήστης πρέπει να καθορίσει κατά τη φόρτωση της λειτουργικής μονάδας.
#!/usr/bin/perl use Arithmetic qw(subtract); print add(5,6); print subtract (5,6);
Από προεπιλογή, η προσθήκη υπορουτίνας θα εξαχθεί. Η μέθοδος αφαίρεσης δεν θα εξαχθεί εάν δεν έχει καθοριστεί κατά τη φόρτωση της λειτουργικής μονάδας.
Αντικειμενοστραφής προγραμματισμός σε Perl
Σε αυτήν την ενότητα, θα μάθουμε πώς να δημιουργείτε μονάδες αντικειμενοστρεφείς της Perl. Αρχικά, ας δούμε ποιο είναι το αντικείμενο; Ένα αντικείμενο είναι μια παρουσία με την οποία μπορούμε να έχουμε πρόσβαση, να τροποποιήσουμε και να εντοπίσουμε ορισμένα δεδομένα σε οποιαδήποτε λειτουργική μονάδα Perl. Αυτό δεν είναι παρά να κάνετε το υπάρχον πακέτο Perl, τις μεταβλητές και τις υπορουτίνες σας να λειτουργούν σαν κλάσεις, αντικείμενα και μεθόδους σε σχέση με άλλες Γλώσσες Προγραμματισμού.
Δημιουργία τάξης
Γνωρίζουμε ήδη πώς να δημιουργήσουμε ενότητες από το προηγούμενο θέμα. Ο σκοπός της κλάσης είναι να αποθηκεύει μεθόδους και μεταβλητές. Μια μονάδα Perl θα έχει υπορουτίνες που είναι μέθοδοι. Πρέπει να αποκτήσουμε πρόσβαση σε αυτές τις μεταβλητές και να κάνουμε υπορουτίνα αντικείμενα.
Perl Constructor
Ένας κατασκευαστής στο Perl είναι μια μέθοδος που θα εκτελέσει και θα μας επιστρέψει μια αναφορά με το όνομα της μονάδας επισημασμένη στην αναφορά. Αυτό ονομάζεται ευλογία της τάξης. Χρησιμοποιούμε μια συγκεκριμένη μεταβλητή για την ευλογία μιας κλάσης perl, η οποία είναι η ευλογία.
#!/usr/bin/perl
package Arithmetic;
sub new
{
my $class=shift;
my $self={};
bless $self, $class;
return $self;
}
sub add
{
my $self= shift;
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $self= shift;
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
Η νέα μέθοδος που χρησιμοποιείται ως κατασκευαστής για μια κλάση, Αυτός ο κατασκευαστής θα δημιουργήσει ένα αντικείμενο για εμάς και θα επιστρέψει στο σενάριο που καλεί αυτόν τον κατασκευαστή.
#!/usr/bin/perl use Arithmetic; my $obj= Arithmetic->new(); my $result= $obj->add(5,6); print "$result"; $result = $obj->subtract(6,5); print "$result";
Εδώ, πρέπει να καταλάβουμε πώς δημιουργήθηκε το αντικείμενο. Κάθε φορά που προσπαθούμε να δημιουργήσουμε ένα αντικείμενο για την κλάση, πρέπει να χρησιμοποιήσουμε το πλήρες όνομα της κλάσης. Ας υποθέσουμε, εάν η κλάση perl βρίσκεται σε κάποιο lib\Math\Arithmetic.pm. Και, αν θέλουμε να έχουμε πρόσβαση σε αυτήν την κλάση perl από τον κατάλογο lib, τότε πρέπει να παρέχουμε ολόκληρη τη διαδρομή της προς την κλάση κατά την κλήση στο σενάριο.
χρήση lib::Math::Arithmetic;
my $obj = lib::Math::Arithmetic->new();
Έτσι γίνεται η δημιουργία αντικειμένων στο Perl.
@INC:
Πώς γνωρίζει το Perl script πού υπάρχει η μονάδα βιβλιοθήκης; Η Perl γνωρίζει μόνο τον τρέχοντα κατάλογο του σεναρίου και την ενσωματωμένη διαδρομή βιβλιοθήκης της Perl. Όποτε χρησιμοποιούμε και την ενότητα Perl, η οποία δεν βρίσκεται στον τρέχοντα κατάλογο ή τη διαδρομή βιβλιοθήκης Perl, το σενάριο θα αποτυγχάνει πάντα. Σχετικά με το @INC, αυτός είναι ένας πίνακας, ο οποίος κρατά όλες τις διαδρομές καταλόγου όπου πρέπει να αναζητήσει τις μονάδες Perl. Προσπαθήστε να εκτελέσετε αυτήν την εντολή και δείτε ποια θα είναι η έξοδος.
perl –e "print @INC"
Αυτό θα δώσει κάποια έξοδο, και αυτή είναι η διαδρομή όπου θα είναι διαθέσιμες οι μονάδες lib. Κάθε φορά που χρησιμοποιούμε οποιαδήποτε νέα λειτουργική μονάδα βιβλιοθήκης, πρέπει να πούμε στην Perl, διερμηνέα, να εξετάσει τη συγκεκριμένη τοποθεσία όπου είναι διαθέσιμη η λειτουργική μονάδα Perl.
push(@INC, "PATH TO YOUR MODULE");
Κάντε αυτό ως την πρώτη γραμμή κώδικα. Αυτό θα πει στον διερμηνέα σας να εξετάσει αυτό το μονοπάτι. ή χρήση
lib Arithmetic; # List here is your Perl Module location
Perl Destructor
Ο καταστροφέας ενός αντικειμένου καλείται από προεπιλογή στο τέλος και πριν από την έξοδο του σεναρίου σας. Αυτό χρησιμοποιείται για την καταστροφή των αντικειμένων σας από τη μνήμη.
PERL V/s Shell Scripting
- Ο προγραμματισμός σε Perl δεν προκαλεί προβλήματα φορητότητας, κάτι που είναι σύνηθες όταν χρησιμοποιούνται διαφορετικά κελύφη στη δέσμη ενεργειών φλοιού.
- Ο χειρισμός σφαλμάτων είναι πολύ εύκολος στην Perl
- Μπορείτε να γράψετε μεγάλα και πολύπλοκα προγράμματα στο Perl εύκολα λόγω της απεραντοσύνης του. Αυτό έρχεται σε αντίθεση με το Shell που δεν υποστηρίζει χώρους ονομάτων, λειτουργικές μονάδες, αντικείμενο, κληρονομικότητα κ.λπ.
- Η Shell διαθέτει λιγότερες επαναχρησιμοποιήσιμες βιβλιοθήκες. Τίποτα σε σύγκριση με το CPAN της Perl
- Το Shell είναι λιγότερο ασφαλές. Είναι καλές εξωτερικές συναρτήσεις (εντολές όπως mv, cp κ.λπ. εξαρτώνται από το κέλυφος που χρησιμοποιείται). Αντίθετα, η Perl κάνει χρήσιμη δουλειά ενώ χρησιμοποιεί εσωτερικές λειτουργίες.
Πώς χρησιμοποιείται το PERL στις δοκιμές αυτοματισμού
Η Perl χρησιμοποιείται ευρέως στον αυτοματισμό. Μπορεί να μην είναι οι καλύτερες γλώσσες προγραμματισμού στον κόσμο, αλλά είναι η πλέον κατάλληλη για συγκεκριμένους τύπους εργασιών. Ας συζητήσουμε πού και γιατί χρησιμοποιείται το Perl Δοκιμές Αυτοματισμού.
Δοκιμή αποθήκευσης
Τι είναι η αποθήκευση; Δεδομένα αποθηκευμένα σε Αρχεία.
Ας υποθέσουμε ότι έχουμε έναν αποθηκευτικό χώρο που σχετίζεται Δοκιμαστική θήκη όπου πρέπει να γράψουμε δεδομένα σε ένα διαμέρισμα, να το διαβάσουμε και να επαληθεύσουμε ότι τα δεδομένα είναι γραμμένα σωστά.
Αυτό μπορεί να γίνει χειροκίνητα, αλλά μπορεί ένας χειροκίνητος ελεγκτής να εκτελέσει το ίδιο 10000 φορές; Θα είναι εφιάλτης! Χρειαζόμαστε αυτοματισμό
Καλυτερα εργαλείο για την αυτοματοποίηση οτιδήποτε σχετίζεται με την αποθήκευση είναι η Perl λόγω των Τεχνικών Διαχείρισης Αρχείων της, REGEX και ισχυρή ανάλυση αρχείων που καταναλώνει λιγότερο χρόνο εκτέλεσης σε σύγκριση με άλλες γλώσσες προγραμματισμού.
Γιατί πρέπει να δοκιμάσουμε την αποθήκευση; Σκεφτείτε μεγάλα Κέντρα Δεδομένων όπου τα δεδομένα θα ρέουν συνεχώς από το ένα σύστημα στο άλλο με 1000 εγγραφές να αποθηκεύονται ανά δευτερόλεπτο. Η δοκιμή της ευρωστίας ενός τέτοιου μηχανισμού αποθήκευσης είναι απαραίτητη.
Πολλές εταιρείες όπως η HP, η Dell, IBM και πολλοί κατασκευαστές διακομιστών χρησιμοποιούν την Perl ως διεπαφή για τη δοκιμή λειτουργικότητας σε τομείς αποθήκευσης και δικτύωσης. Η NetApp είναι μια τέτοια εταιρεία που λειτουργεί πλήρως στο Storage και χρησιμοποιεί την Perl ως γλώσσα προγραμματισμού για την αυτοματοποίηση των δοκιμαστικών περιπτώσεων.
Εάν ενδιαφέρεστε για την Perl Automation, τότε θα ήταν σκόπιμο να μάθετε για το Storage & Networking Concepts.
Δοκιμή διακομιστή και δικτύου:
Δοκιμή διακομιστή και δικτύου με χρήση Perl
Το PERL χρησιμοποιείται ευρέως στον χρόνο λειτουργίας του διακομιστή και την παρακολούθηση της απόδοσης.
Σκεφτείτε ένα κέντρο δεδομένων που έχει 100 κεντρικούς υπολογιστές (διακομιστές). Πρέπει να συνδεθείτε σε κάθε κεντρικό υπολογιστή, να εκτελέσετε κάποιες εντολές εξ αποστάσεως. Θέλετε επίσης να επανεκκινήσετε το σύστημα και να ελέγξετε πότε θα επανέλθει στο διαδίκτυο.
Η μη αυτόματη εκτέλεση αυτής της εργασίας και για τους 100 οικοδεσπότες θα είναι εφιάλτης. Αλλά μπορούμε εύκολα να το αυτοματοποιήσουμε χρησιμοποιώντας το PERL
Σχεδιάστε βήματα για να επιτύχετε αυτόν τον παραπάνω αυτοματισμό χρησιμοποιώντας PERL
- Λάβετε δεδομένα από το αρχείο σχετικά με τις πληροφορίες του κεντρικού υπολογιστή, όπως (IP, Όνομα χρήστη και Κωδικός πρόσβασης).
- Χρησιμοποιήστε το Net::SSH2 για να συνδεθείτε σε κάθε σύστημα και να δημιουργήσετε ένα κανάλι για να εκτελέσετε τις εντολές.
- Εκτελέστε το σύνολο των απαιτούμενων εντολών π.χ.: ls, dir, ifconfig, ps κ.λπ.
- Επανεκκινήστε το σύστημα.
- Περιμένετε 10 λεπτά για να εμφανιστεί το σύστημα.
- Πραγματοποιήστε ping στο σύστημα χρησιμοποιώντας τη μονάδα Net::Ping και εκτυπώστε την κατάσταση.
Θα κωδικοποιήσουμε το παραπάνω σενάριο.
Ας πάρουμε ένα αρχείο που ονομάζεται Input.txt το οποίο θα αποθηκεύσει τις πλήρεις πληροφορίες για όλους τους κεντρικούς υπολογιστές στους οποίους πρέπει να συνδεθούμε και να εκτελέσουμε την εντολή.
Input.txt
192.168.1.2 κωδικός πρόσβασης root
192.168.1.3 κωδικός πρόσβασης root
192.168.1.4 ρίζα ρίζας123
HostCheck.pl
use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new(); # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new(); #Creating object for Net::SSH2
open( FH, "Input.txt" ); # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ ) #Regex to get each info from file
{
$ip = $1;
my $user = $2;
my $password = $3;
$SSHObj->connect($ip);
print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
my $status = $SSHObj->auth_password( $user, $password );
print "$status\n";
die("unable to establish connection to -- $ip") unless ($status);
my $shell = $SSHObj->channel();
print "$_\n" while <$shell>;
$shell->blocking(1);
$shell->pty('tty');
$shell->shell();
sleep(5);
#Executing the list of command on particular host. Can be any command
print $shell "ls \n";
print "$_\n" while <$shell>;
print $shell "ps \n";
print "$_\n" while <$shell>;
print $shell "dir \n";
print "$_\n" while <$shell>;
print $shell "init 6\n"; #rebooting the system
push( @ips, $ip );
}
}
sleep 600;
foreach (@ips)
{
if ( $ping->ping($_) )
{
print "$_ is alive.\n" if $ping->ping($_);
}
else
{
print "$_ is not still up --waiting for it to come up\n";
}
}
Web Testing
Η Perl δεν περιορίζεται μόνο σε δοκιμές αποθήκευσης και δικτύου. Μπορούμε επίσης να εκτελέσουμε δοκιμές που βασίζονται στο Web χρησιμοποιώντας PERL. WWW-Μηχανοποίηση είναι μία ενότητα που χρησιμοποιείται για διαδικτυακές δοκιμές. Βασικά, δεν θα εκκινήσει κανένα πρόγραμμα περιήγησης για να δοκιμάσει τη λειτουργικότητα της εφαρμογής Ιστού, αλλά χρησιμοποιεί τον πηγαίο κώδικα των σελίδων html.
Μπορούμε επίσης να εκτελέσουμε δοκιμές βάσει προγράμματος περιήγησης χρησιμοποιώντας Selenium Πρόγραμμα οδήγησης IDE, RC, Web. Το Perl υποστηρίζεται για Selenium.
\n”; #this θα κρατήσει το υπόλοιπο string μετά την ολοκλήρωση της αντιστοίχισης patter.
Τυπώνω "





