Ερχόμενοι από μια άλλη γλώσσα#

Ξέρετε ήδη να προγραμματίζετε. Φτάνετε σε ένα hash, σε έναν βρόχο, σε μια συνάρτηση, σε ένα regex χωρίς να το σκέφτεστε - σε κάποια άλλη γλώσσα. Αυτοί οι οδηγοί διδάσκουν την Perl αντιστοιχίζοντας αυτό που ήδη κάνετε με το πώς το κάνει η Perl, μία κατασκευή τη φορά. Το λεξικό σας είναι ένα hash της Perl· εδώ είναι η σύνταξη, και εδώ είναι το ένα σημείο όπου η αναλογία στάζει.

Κάθε οδηγός προϋποθέτει ότι είστε ευχερείς στη γλώσσα προέλευσης και νέοι στην Perl. Δεν σας ξαναδιδάσκει τη γλώσσα προέλευσης. Διδάσκει την πλευρά της Perl σε κάθε ζευγάρωμα: τη σύνταξη, το ιδίωμα, και - το πιο χρήσιμο απ” όλα - την παγίδα που κρύβει η επιφανειακή ομοιότητα.

Κάθε οδηγός σε αυτή τη σειρά καλύπτει τα ίδια θέματα με την ίδια σειρά, ώστε η αντιστοίχιση να είναι συγκρίσιμη μεταξύ γλωσσών και η σειρά να επεκτείνεται καθαρά καθώς προστίθενται νέες γλώσσες. Η σειρά κινείται από αυτά που μοιράζεται κάθε γλώσσα (μεταβλητές, συμβολοσειρές, αριθμοί), μέσα από τα διακριτικά σχήματα της Perl (sigils, ο διαχωρισμός array/hash, και το περιβάλλον - η μία ιδέα που δεν έχει καμία άλλη γλώσσα), προς τη δομή (υπορουτίνες, αναφορές, αρθρώματα, αντικείμενα), και τέλος μέσα από την επιφάνεια εργασίας (regex, I/O, χειρισμός σφαλμάτων, ιδιώματα), καταλήγοντας σε μια ανά γλώσσα συλλογή των παγίδων που πραγματικά δαγκώνουν.

Ποιον οδηγό θέλετε#

  • Από Python σε Perl - sigils εκεί που η Python δεν έχει κανένα, ο διαχωρισμός array/hash εκεί που η Python έχει list και dict, comprehensions ξαναγραμμένα ως map/grep, και η έννοια του περιβάλλοντος για την οποία η Python δεν έχει λέξη.

  • Από PHP σε Perl - έχετε ήδη το $, αλλά στην Perl αλλάζει ανάλογα με την προσπέλαση, ο ένας τύπος array της PHP χωρίζεται σε @array και %hash, και τα . έναντι + (και == έναντι eq) παύουν να είναι εναλλάξιμα.

  • Από Ruby σε Perl - τα blocks γίνονται μπλοκ και closures της Perl, οι κλήσεις-μεθόδων-σε-όλα γίνονται απλές συναρτήσεις, και το «μόνο τα nil και false είναι ψευδή» της Ruby αντιστρέφεται στην αλήθεια της Perl.

  • Από Lua σε Perl - ο ένας τύπος table χωρίζεται σε @array και %hash, η ευρετηρίαση γίνεται 0-based, τα μοτίβα της Lua γίνονται πραγματικά regex, και οι πολλαπλές τιμές επιστροφής είναι η γέφυρά σας προς το περιβάλλον της Perl.

  • Sed to Perl - the same s/// you already know, sed’s y/// becomes tr///, address ranges become the /a/ .. /b/ flip-flop, and the hold space becomes an ordinary Perl variable.

  • Awk to Perl - Perl grew out of awk, so almost everything maps directly: fields become @F and split, NR becomes $., associative arrays become hashes, and BEGIN/END keep their names.

  • Shell to Perl - for when a shell script outgrew itself: $(cmd) becomes qx{}, the [ ]/-f file tests carry straight over, and the ${var#...} parameter expansions become real regex.

  • Tcl to Perl - a carry-over for Tcl maintainers: set x becomes my $x, [expr {}] disappears into native operators, lists and array become Perl arrays and hashes, and regsub becomes s///.

Η μία έννοια που πρέπει να διαβάσετε πρώτη#

Αν διαβάσετε μόνο μία ενότητα από όποιον οδηγό ταιριάζει στο υπόβαθρό σας, διαβάστε το Περιβάλλον. Κάθε άλλη γλώσσα σε αυτή τη σειρά συμπτύσσει μια συλλογή σε ένα πλήθος, σε ένα πρώτο στοιχείο, ή σε μια λογική τιμή με ρητή σύνταξη (len(x), x[0], bool(x)). Η Perl το κάνει μέσω του περιβάλλοντος: η ίδια έκφραση δίνει μια λίστα σε ένα σημείο και ένα μοναδικό βαθμωτό σε άλλο, ανάλογα με το πού τη γράψατε. Είναι η πηγή των περισσότερων συγχύσεων του τύπου «γιατί ο πίνακάς μου έγινε ο αριθμός 3;», και μόλις το συλλάβετε η υπόλοιπη Perl μπαίνει στη θέση της.

Μια σημείωση για το runtime#

These guides target pperl, a faithful Rust reimplementation of Perl 5.42. Every Perl example that runs as a script was executed on pperl and shows real output. The text-processing guides (sed, awk, shell) also show the classic perl -ne/perl -pe one-liner forms, which are the idiomatic Perl equivalent; the implicit-loop switches behind them are not yet recognised by this pperl build, so those one-liners are shown for reference and paired with an explicit-loop script you can run today.