Τύποι δεδομένων#

Η Perl έχει τρεις θεμελιώδεις τύπους δεδομένων - βαθμωτά (scalars), πίνακες (arrays) και hashes - καθώς και ένα μικρό αριθμό υποστηρικτικών ειδών (αναφορές, typeglobs, κώδικας) που τεχνικά είναι βαθμωτά αλλά συμπεριφέρονται αρκετά διαφορετικά ώστε να χρήζουν ξεχωριστής αντιμετώπισης. Κάθε τιμή που χειρίζεται η γλώσσα ανήκει σε κάποιον από αυτούς.

Αυτή η αναφορά χωρίζεται σε μία σελίδα ανά θέμα. Θέματα που μοιράζονται περιβάλλον (μετατροπή αριθμητικών έναντι συμβολοσειρών, αναφορές έναντι typeglobs, περιβάλλον έναντι παρεμβολής) βρίσκονται στην ίδια σελίδα· θέματα που δεν μοιράζονται περιβάλλον αποκτούν δική τους σελίδα.

Επιλέξτε θέμα#

  • Scalars - $x. Αριθμοί, συμβολοσειρές, αναφορές· undef· αλήθεια και ορισμένη τιμή· η διπλή αριθμητική/συμβολοσειριακή φύση των βαθμωτών.

  • Arrays - @arr. Πρόσβαση στοιχείων, $#arr, αρνητικοί δείκτες, τομές, ανάθεση λίστας, ο κανόνας sigil @arr / $arr[i] / @arr[i,j].

  • Hashes - %h. Ζεύγη κλειδιού-τιμής, οι τέσσερις παραλλαγές subscript, keys/values/each, σειρά κλειδιών, τομές hash και τομές κλειδιού/τιμής.

  • Context - λίστα, βαθμωτό, κενό, λογικό. Πώς κάθε τελεστής και ανάθεση επιβάλλει περιβάλλον, τι αναφέρει η wantarray, ο τελεστής scalar() και οι επαναλαμβανόμενες παγίδες με το , έναντι κατασκευής λίστας.

  • Numbers and strings - αυτόματη μετατροπή και προς τις δύο κατευθύνσεις, ακέραιος έναντι κινητής υποδιαστολής, Inf και NaN, μορφές αριθμητικών κυριολεκτικών, «0 but true», dualvar, παγίδες τοπικών ρυθμίσεων και ακρίβειας.

  • References - \X, τα επτά πράγματα στα οποία μπορείτε να κάνετε αναφορά, οι τέσσερις τρόποι αποαναφοράς, αυτο-δημιουργία, ασθενείς αναφορές, κυκλικές δομές, ref και Scalar::Util.

  • Typeglobs - *name. Η εγγραφή πίνακα συμβόλων, ψευδωνυμοποίηση, *foo{THING}, πότε η σύγχρονη Perl τα χρειάζεται ακόμα και πότε οι αναφορές είναι η σωστή εναλλακτική.

  • Interpolation - τι παρεμβάλλεται μέσα σε συμβολοσειρές με διπλά εισαγωγικά, here-docs και μοτίβα regex· οι αγκύλες ${name}· οι περίπλοκες κατασκευές @{[ expr ]} και ${\ expr }· αμφισημίες με [ και { μετά από sigil.

Διατομεακές έννοιες#

Μια χούφτα ιδεών εμφανίζεται σε κάθε σελίδα παρακάτω. Διαβάστε τις μία φορά και τα υπόλοιπα θα σας φανούν οικεία:

  • Τα sigils σημειώνουν το αποτέλεσμα, όχι τον περιέκτη. Το @arr[1, 3] δεν σημαίνει «δύο πίνακες»· το @ λέει «το αποτέλεσμα είναι μια λίστα». Η μεταβλητή με όνομα arr είναι η ίδια στα @arr, $arr[0], @arr[0..3] και %arr[0..3].

  • Το περιβάλλον εξαναγκάζει. Ένα βαθμωτό που αποτιμάται σε περιβάλλον λίστας γίνεται λίστα ενός στοιχείου· μια λίστα που αποτιμάται σε βαθμωτό περιβάλλον δίνει το τελευταίο στοιχείο της (τελεστής κόμματος), αλλά ένας πίνακας σε βαθμωτό περιβάλλον δίνει το μήκος του. Οι δύο περιπτώσεις δεν είναι ίδιες· δείτε context.

  • Οι αναφορές είναι βαθμωτά. Μια αναφορά σε οτιδήποτε χωράει σε μια βαθμωτή μεταβλητή, κάτι που καθιστά δυνατές τις εμφωλευμένες δομές δεδομένων. Η σύνταξη αποαναφοράς (@$ref, $ref->[0], ${$ref}{key}) είναι η αντίστροφη της \.

  • Η undef είναι τιμή, όχι απουσία τιμής. Ένα βαθμωτό μπορεί να περιέχει την τιμή undef· ο τρόπος ελέγχου είναι η defined $x. Ένας πίνακας μπορεί να έχει στοιχεία undef χωρίς να είναι κενός.

  • Συμβολοσειρές και αριθμοί μετατρέπονται σιωπηλά. Το "42" + 1 δίνει 43, το 42 . "x" δίνει "42x". Η μετατροπή είναι πάντα ορισμένη· δείτε numbers and strings για το τι θεωρείται «μοιάζει με αριθμό» και πού βρίσκονται οι γωνιακές περιπτώσεις.

Δείτε επίσης#

  • perlop - οι τελεστές που διαβάζουν και παράγουν αυτές τις τιμές (αριθμητικοί, σύγκρισης, subscript, εύρους, βέλους, ανάθεσης).

  • perlvar - οι ειδικές μεταβλητές που η Perl γεμίζει με κατάσταση από την τελευταία λειτουργία, συμπεριλαμβανομένων των $_, @_, των μεταβλητών αντιστοιχίας και των $/, $\, $,, $" που διαμορφώνουν το I/O.

  • perlfunc - οι ενσωματωμένες συναρτήσεις που λειτουργούν πάνω σε αυτούς τους τύπους: ref, scalar, wantarray, defined, keys, values, each, exists, delete, bless.

  • References tutorial - βήμα-προς-βήμα εισαγωγή στις μορφές αναφορών που καλύπτονται συνοπτικά στο references.