Πίνακας περιεχομένων:
- Συλλογή μοναδικών γραμμών
- Απαλλαγή από πολλές κενές γραμμές
- Γραμμές εκτύπωσης από ένα αρχείο με ταξινομημένη σειρά
- Εκτύπωση μιας σειράς γραμμών από ένα αρχείο
- Καταχωρίστε μόνο τα αρχεία σε έναν κατάλογο
- Ταξινόμηση καταλόγων κατά επέκταση
- Δημιουργία απλής αριθμομηχανής
- Στο Perl, η δημιουργία τυχαίων αριθμών είναι εύκολη, αλλά τυχαία η σειρά ενός πίνακα δεν είναι τόσο απλή. Παρόλα αυτά, μπορείτε να χρησιμοποιήσετε τη συνάρτηση ματίσματος για να τραβήξετε ένα τυχαίο στοιχείο από έναν πίνακα και στη συνέχεια να τοποθετήσετε το στοιχείο σε μια άλλη συστοιχία. Το ακόλουθο πρόγραμμα τυχαίνει τη λίστα @MyList:
- Η προσπάθεια να πεισθούν οι χρήστες υπολογιστών να βρουν κωδικούς πρόσβασης που δεν είναι εύκολο να μαντέψουν είναι μια από τις πιο δύσκολες εργασίες για έναν διαχειριστή συστήματος. Οι άνθρωποι πάντοτε φαίνεται να επιμένουν να χρησιμοποιούν τα ονόματα γέννησής τους ή τα ονόματα των κατοικίδιων ζώων για κωδικούς πρόσβασης - η παραβίαση της ασφάλειας γίνεται έπειτα παιδί.
Βίντεο: STAR FREQUENCIES HEALING SCIENCE VIBRATIONAL QUANTUM CONVERSATIONS SHOW LAUREN GALEY SACRED GEOMETRY 2024
Μερικοί άνθρωποι πιστεύουν ότι τα σύντομα προγράμματα δεν είναι καλά για πολύ, αλλά αυτό δεν συμβαίνει με την Perl. Μόνο μερικές γραμμές του κώδικα Perl μπορούν να προχωρήσουν πολύ. Αυτό το άρθρο παραθέτει μερικά χρήσιμα teeny, μικροσκοπικά προγράμματα Perl.
Συλλογή μοναδικών γραμμών
Αν το αρχείο κειμένου σας έχει πολλές γραμμές που είναι διπλές και θέλετε μόνο να δείτε τις μοναδικές γραμμές, μπορείτε να τις συλλέξετε σε έναν πίνακα (σε αυτή την περίπτωση ονομάζεται @Unique) με το ακόλουθο πρόγραμμα:
ανοίξτε (IN, "somefile. Txt"); @ Unique = ();
ενώ () {εκτός ($ i {$ _} ++) {push (@Unique, $ _)}}
δημιουργείτε ένα ζεύγος κλειδιού-τιμής με το κλειδί $ _ και κάποια μη μηδενική τιμή μετά από αυτό.
Απαλλαγή από πολλές κενές γραμμές
Ορισμένα αρχεία κειμένου έχουν πολλαπλές, διαδοχικές κενές γραμμές, οι οποίες τους καθιστούν δύσκολο να διαβάσουν, ειδικά σε μικρές οθόνες. Το ακόλουθο πρόγραμμα εκτυπώνει ένα αρχείο κειμένου, συμπιέζοντας όλες τις εμφανίσεις δύο ή περισσότερων κενών γραμμών σε μία κενή γραμμή.
Σημείωση: Μια κενή γραμμή μπορεί να έχει χαρακτήρες κενών διαστημάτων, όπως διαστήματα και καρτέλες, αλλά δεν εμφανίζει χαρακτήρες.
ανοίξτε (IN, "somefile. Txt"); $ PrevBlank = 0;
ενώ () {
αν (/ S / ή! $ PrevBlank) {print $ _}
$ PrevBlank = / ^ s * $ /;
}
Η εντολή if στο προηγούμενο παράδειγμα είναι αληθής αν υπάρχουν γραμμένες χαρακτήρες στη γραμμή ή αν η προηγούμενη γραμμή δεν ήταν κενή. Η αντιστοίχιση $ PrevBlank σάς ενημερώνει εάν η τρέχουσα γραμμή είναι κενή, δηλαδή ότι έχει μηδενικούς ή περισσότερους χαρακτήρες λευκού και τίποτα άλλο.
Γραμμές εκτύπωσης από ένα αρχείο με ταξινομημένη σειρά
Είναι εύκολο να ξεχάσουμε πόσο χρήσιμη είναι η λειτουργία ταξινόμησης Perl. Το ακόλουθο πρόγραμμα διαβάζει ολόκληρο το αρχείο σε έναν πίνακα, ταξινομεί τον πίνακα και εκτυπώνει το αποτέλεσμα. Σύντομη και γλυκιά και αρκετά αποτελεσματική για εκκίνηση:
ανοιχτή (IN, "somefile. Txt");
τύπος εκτύπωσης ();
Εκτύπωση μιας σειράς γραμμών από ένα αρχείο
Έχετε ποτέ θελήσει να διαβάσετε μόνο μερικές γραμμές από ένα αρχείο και όχι το όλο θέμα; Το ακόλουθο πρόγραμμα εκτυπώνει μόνο μια σειρά γραμμών. Εκτελείτε το πρόγραμμα με δύο επιχειρήματα: το εύρος που θέλετε και το όνομα αρχείου. Για παράδειγμα, εάν ονομάσετε το πρόγραμμά σας "showline" και θέλετε να δείτε τις γραμμές 10 έως 20 του somefile. txt, χρησιμοποιείτε αυτή τη γραμμή εντολών:
showline 10-20 somefile. txt
Το παρακάτω πρόγραμμα εκτυπώνει μια σειρά γραμμών:
ανοίξτε (IN, $ ARGV [1]) ή περάστε "Δεν ήταν δυνατή η ανάγνωση του αρχείου $. n ";
($ Έναρξη, $ Διακοπή) = διαίρεση (/ - /, $ ARGV [0]);
για το ($ i = 1; $ i <= $ stop; $ i + = 1)
{$ Line =; εάν ($ i> = $ Start) {print $ Line}}
Καταχωρίστε μόνο τα αρχεία σε έναν κατάλογο
Μερικές φορές μπορεί να θέλετε να αγνοήσετε τους υποκαταλόγους σε έναν κατάλογο και να επικεντρωθείτε μόνο στα αρχεία.Μπορείτε να χρησιμοποιήσετε την παρακάτω δοκιμασία -f για να εμφανίσετε όλα τα αρχεία σε έναν κατάλογο:
foreach $ f () {if (-f $ f) {print "$ fn"}}
Για να ταξινομήσετε μια λίστα καταλόγου με οτιδήποτε άλλο από τα ονόματα αρχείων της, το πρόγραμμά σας πρέπει να διατηρεί μια λίστα αρχείων που αποτελείται από τα ονόματα και άλλα στοιχεία της καταχώρισης. Τα hashes είναι εξαιρετικά χρήσιμα για αυτό το είδος λίστας που έχει εγγραφές με ένα κλειδί (το όνομα αρχείου) και μια τιμή (τις άλλες πληροφορίες καταλόγου). Το ακόλουθο πρόγραμμα δημιουργεί ένα hash που καταγράφει το μέγεθος κάθε αρχείου στον κατάλογο και στη συνέχεια ταξινομεί τα στοιχεία για την έξοδο. (Μπορείτε εύκολα να τροποποιήσετε αυτό το πρόγραμμα για ταξινόμηση κατά ημερομηνία αντί για μέγεθος.)
foreach $ f () {$ i {$ f} = -s $ f};
foreach $ k (είδος {$ i {$ b} <= & gt $ i {$ a}} κλειδιά% i)
{printf "% 8d% sn", $ i {$ k} }
Ταξινόμηση καταλόγων κατά επέκταση
Η ταξινόμηση κατά τμήμα ενός ονόματος αρχείου είναι μια ελαφρώς πιο δύσκολη διαδικασία από την ταξινόμηση κατά μέγεθος αρχείου ή από την ημερομηνία τροποποίησης του αρχείου. Το ακόλουθο πρόγραμμα σπάει το όνομα αρχείου σε δύο και ταξινομεί το δεύτερο μέρος. Εάν χρησιμοποιείτε το Perl σε ένα σύστημα UNIX ή Macintosh, αυτό το πρόγραμμα λειτουργεί με προβλέψιμο τρόπο μόνο αν τα ονόματα αρχείων δεν έχουν περίοδο ή περίοδο:
foreach $ FullName () {
($ Name, $ Ext) = split /. /, $ FullName, 2).
ώθηση (@Temp, "$ Extt $ FullName");
}
foreach $ Val (ταξινόμηση (@Temp)) {
($ Ext, $ FullName) = διαίρεση (/ t /, $ Val);
εκτύπωση "$ FullNamen";
}
Δημιουργία απλής αριθμομηχανής
Χρειάστηκε ποτέ μια απλή στη χρήση αριθμομηχανή για να χτυπήσει κάποια γρήγορα και βρώμικα μαθηματικά; Το παρακάτω πρόγραμμα χρησιμοποιεί τη λειτουργία eval της Perl για να εκτυπώσει τις απαντήσεις σε οποιαδήποτε εξίσωση εισάγετε. Για να τερματίσετε το πρόγραμμα, πληκτρολογήστε μια κενή γραμμή. Εδώ είναι αυτό το πρόγραμμα για τη δημιουργία της δικής σας αριθμομηχανής:
ενώ () {
$ i = $ _; chomp ($ i); εκτός και αν ($ i) {last}
$ o = eval ($ i); εκτύπωση "Answer = $ on";
}
Όταν τρέχετε το πρόγραμμα, μπορείτε να εισάγετε κάτι σαν το εξής:
((2 ** 8) + (3 ** 8))
> Answer = 6817
Τυχαία λίστα
Στο Perl, η δημιουργία τυχαίων αριθμών είναι εύκολη, αλλά τυχαία η σειρά ενός πίνακα δεν είναι τόσο απλή. Παρόλα αυτά, μπορείτε να χρησιμοποιήσετε τη συνάρτηση ματίσματος για να τραβήξετε ένα τυχαίο στοιχείο από έναν πίνακα και στη συνέχεια να τοποθετήσετε το στοιχείο σε μια άλλη συστοιχία. Το ακόλουθο πρόγραμμα τυχαίνει τη λίστα @MyList:
my @TempList = ();
ενώ (@MyList)
{push (@TempList, splice (@MyList, rand (@MyList), 1)}}
@MyList = @TempList;
Το κόλπο εδώ είναι ότι το rand (@MyList) επιλέγει έναν αριθμό μεταξύ του 0 και του αριθμού των στοιχείων στο @MyList, και η ματιά αλλάζει αυτόν τον τυχαίο αριθμό σε έναν ακέραιο αριθμό.
Δημιουργία τυχαίων μνημονικών κωδικών πρόσβασης
Η προσπάθεια να πεισθούν οι χρήστες υπολογιστών να βρουν κωδικούς πρόσβασης που δεν είναι εύκολο να μαντέψουν είναι μια από τις πιο δύσκολες εργασίες για έναν διαχειριστή συστήματος. Οι άνθρωποι πάντοτε φαίνεται να επιμένουν να χρησιμοποιούν τα ονόματα γέννησής τους ή τα ονόματα των κατοικίδιων ζώων για κωδικούς πρόσβασης - η παραβίαση της ασφάλειας γίνεται έπειτα παιδί.
Το ακόλουθο πρόγραμμα δημιουργεί τυχαίους κωδικούς πρόσβασης. Αντί για ένα συνονθύλευμα επιστολών δύσκολο να θυμηθούμε, ωστόσο, οι κωδικοί πρόσβασης είναι μνημονικά μάλλον επειδή εμφανίζονται σε ζεύγη συφωνιών και φωνηέντων που είναι προφανή.Συνδυάζοντας μερικές συσκοτίζουσες συλλαβές, μπορείτε να δημιουργήσετε εύχρηστες φράσεις.
Κάθε συλλαβή του κωδικού πρόσβασης μπορεί να αντιπροσωπεύει έναν από τους 100 αριθμούς. Ως εκ τούτου, ένας μόνο κωδικός τεσσάρων συλλαβών, όπως το
votahubo, είναι ένας από τους 100 εκατομμύρια (100 έως τέταρτη δύναμη) τους δυνατούς κωδικούς πρόσβασης που δημιουργεί το πρόγραμμα. Έχοντας έναν διαχειριστή συστήματος να αναθέσει αυτούς τους κωδικούς πρόσβασης παρέχει περισσότερη ασφάλεια από ό, τι αφήνοντας τους χρήστες να επιλέξουν τους δικούς τους, εύκολα μαντέψανοι κωδικοί πρόσβασης: print "Εισάγετε έναν αριθμό σπόρου:"; $ s =;
srand ($ s ^ χρόνος);
@ c = διαίρεση (/ * /, "bcdfghjklmnprstvwxyz");
@ v = διαίρεση (/ * /, "aeiou");
($ i = 1; $ i <= 4; $ i + = 1)
{print $ c [int (rand (20) }
Οι πρώτες δύο γραμμές αυτού του προγράμματος αρχικοποιούν τον σπόρο για τους τυχαίους αριθμούς και οι επόμενες δύο γραμμές δημιουργούν λίστες που περιέχουν τα 20 ακονόνια (μείον
q ) και 5 φωνήεντα του αλφαβήτου. Ο βρόχος για απλά εκτυπώνει τις τέσσερις συλλαβές.