P ERL One of the most respectable general-purpose scripting languages Δημητρίου Νίκος Δημητρίου Θεόδωρος Ζαβού Έλλη.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Advertisements

Scripting Language Python
ΛΟΓΙΣΜΙΚΟ.
• Php • Joomla • Joomla Module • Παρουσίαση του συστήματος μας.
5η Συνάντηση Εκπαιδευτικών Πληροφορικής στη Δυτική Μακεδονία Πτολεμαΐδα, 29 Σεπτ 2005 Δημιουργία Δυναμικών Ιστοσελίδων με PHP και Dreamweaver MX Στυλιάδης.
MySQL + Γλώσσα Προγραμματισμού
Ανάπτυξη Δικτύων Καθηγητής: Φουληράς Παναγιώτης
Μάθημα 2 Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ
Εργαστήριο Λειτουργικών Συστημάτων Φροντιστήριο 2– Εισαγωγή στη Bash Ντίρλης Νικόλαος.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών9-1 Στατικός Έλεγχος Με τον όρο στατικός έλεγχος (static checking) χαρακτηρίζεται ο έλεγχος της συντακτικής.
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
PL/SQL.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος α
Μέλη ομάδας Μαρία Στυλιανού Νίκος Οδυσσέως Γεωργία Χριστοδουλίδου
Εισαγωγή στο UNIX και άλλα εργαλεία Pedro Trancoso Γιαννάκης Σαζεϊδης.
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΣΥΝΑΡΤΗΣΕΙΣ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Τμήμα Πληροφορικής Πανεπιστημίου Κύπρου ΕΠΛ 371 – Προγραμματισμός Συστημάτων Ονόματα: Αντώνης Μαυρής, Γιώργος Ματθαίου, Χρίστος Κυριάκου Ταυτότητες: ,
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Ιόνιο Πανεπιστήμιο ΠΜΣ Επιστήμη της Πληροφορίας Διατύπωση Ερωτημάτων σε XML τεκμήρια με τη γλώσσα XQuery Εργασία για το μάθημα Ηλεκτρονική Δημοσίευση Υπεύθυνος.
PHP/MYSQL ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΟΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ ΤΥΡΟΛΟΓΟΥ ΓΛΥΚΕΡΙΑ ΑΜ 875 ΡΙΖΟΥ ΔΕΣΠΟΙΝΑ ΑΜ 816.
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
ΛΑΔΑΚΑΚΟΣ ΘΑΛΗΣ Α.Μ ΔΙΑΧΕΙΡΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
1 Κλήσεις συναρτήσεων και προγραμματισμός με μηχανές καταστάσεων.
Κουλίνας Μιχαήλ Α.Μ.:774 Μπουρνάζης Χρήστος Α.Μ.:792 Ρογκάκος Γεώργιος Α.Μ.:817.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ – FILE & PROCESS HANDLING Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ «Εισαγωγή στον οντοκεντρικό προγραμματισμό (βασική εισαγωγή στο περιβάλλον εργασίας)» Ρουσσάκης Ιωάννης, ΤΕΙ Κρήτης,
Εργαστήριο «Διαχείριση & Ασφάλεια Δικτύων» Επισκόπηση Βασικών Δικτυακών Λειτουργιών Διδάσκων: Δρ. Γενειατάκης Δημήτρης Τμήμα Επιστήμης.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Εισαγωγή στην Python.
Μαθαίνω με “υπότιτλους”
Εισαγωγή στον Προγ/μό Η/Υ
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Εισαγωγή στον Προγ/μό Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
Η Γλώσσα Pascal Υποπρογράμματα
Εισαγωγή στην Πληροφορική μεγάλου όγκου δεδομένων
Γλώσσα Προγραμματισμού V PHP
Εισαγωγή στη Java (Μέρος Α’)
Λούκας Νεοκλέους - Μαρία Χαραλάμπους - Βλαδίμηρος Θεοδοσίου
Τύποι δεδομένων και τελεστές,
Μεταγράφημα παρουσίασης:

P ERL One of the most respectable general-purpose scripting languages Δημητρίου Νίκος Δημητρίου Θεόδωρος Ζαβού Έλλη

Ιστορική Αναδρομή Δημιουργός: Larry Wall η έκδοση η έκδοση : υποστήριξη κανονικών εκφράσεων η έκδοση : υποστήριξη επεξεργασίας binary δεδομένων η έκδοση : απλά για συμβατότητα με το βιβλίο “Programming Perl”  The Camel Book η έκδοση : υποστήριξη γλώσσας σε πολλαπλές πλατφόρμες

Ιστορική Αναδρομή 1995 : CPAN (Comprehensive Perl Archive Network) 2000: 5.6 έκδοση : υποστήριξη 64bit, unicode string processing, αρχεία μεγαλύτερα των 2 GB. 2002: 5.8 έκδοση κυκλοφόρησε 18 του Ιούλιου και είχε ανανεώσεις σχεδόν κάθε χρόνο από τότε. 2007: Στις 18 του Δεκέμβρη, στην 20ή επέτειος της έκδοσης 1.0, η Perl κυκλοφόρησε. 2010: Η τελευταία έκδοση της Perl είναι η Perl 5 ( Release Candidate 0)

Πλεονεκτήματα “The Swiss Army chainsaw of programming languages” – Πρακτική, εύκολη, αποδοτική – Sequential, object-oriented and procedural programming “There’s more than one way to do it” “Easy things should be easy and hard things should be possible” Μεταφέρεται σε διαφορετικές μηχανές Perl scripts για παραγωγή κώδικα και χρήση σε ιστοσελίδες. “Perl is a language for getting your job done” Δεν χρειάζονται δηλώσεις μεταβλητών

Μειονεκτήματα Χρήση module  μη εφικτή εκτέλεση σε διαφορετικό σύστημα. Περισσότερος κώδικας μερικές φορές σε σχέση με άλλη γλώσσα Ασυγύριστος και δυσκολοδιάβαστος κώδικας Περίπλοκοι τελεστές και εξειδικευμένες συντάξεις

Πλατφόρμες Υποστήριξης Δωρεάν λογισμικό κάτω από GNU General Public License Πιο διαδεδομένη στα Unix και Unix-like συστήματα Ειδική έκδοση για Mac OS Classic – MacPerl MS – DOS Διάφορες εκδόσεις Windows – Strawberry Perl – ActivePerl

Γενικές Πληροφορίες Από τις καλύτερες γλώσσες για CGI scripts. – web development – glue language – system administration – GUI development – network programming – Bioinformatics “One of the three P’s” – Perl, Python, PHP

Γενικές Πληροφορίες C, Shell programming, AWK, Sed και Lisp – Procedural, Μεταβλητές, Expressions, Statements, Δομές ελέγχου, Υπορουτίνες Build-in functions για εντολές συστημάτων Δεν ορίζονται τύποι μεταβλητών όμως χρησιμοποιούνται sigils Υπάρχουν λίστες, πίνακες, hash tables και υποστηρίζονται κανονικές εκφράσεις

Εγκατάσταση Μπορούμε να κατεβάσουμε το source code ή το binary αρχείο για το λειτουργικό σύστημα που μας ενδιαφέρει από την ιστοσελίδα :

Κώδικας και Μεταγλώττιση Πρόγραμμα “Hello World” Κώδικας : hello.pl 1.print “Hello World\n”; 2.#!/usr/bin/perl print “Hello World\n”; Μεταγλώττιση 1.$perl hello.pl 2.$chmod 777 hello.pl $./hello.pl Αποτέλεσμα 1. Hello World 2. Hello World

Προγραμματίζοντας με Perl #This is a comment print "Hello, world!\n"; use 5.010; say 'Hello, world!‘

Προγραμματίζοντας με Perl Μονά και Διπλά εισαγωγικά : – $name = “Sam”; “My name is $name”  My name is Sam ‘My name is $name’  My name is $name Multilined String : – $multilined_string = <<EOF; This is my multilined string EOF define() : – $false = 0x0; # the number zero in hexadecimal – $false = '0'; # the string zero – $false = ""; # the empty string – $false = undef; # the return value from undef

Προγραμματίζοντας με Perl Πίνακες = ( 2, 1, 15, 34); $scores[$i] #δίνει την τιμή στη θέση i = split(‘,’, ’ 32, 45, 16, = # weed out comments $foo = # find how many lines are not comments Hash Tables : %favourite = (‘joe’, “red”, ‘sam’, “blue”); %favourite = (joe => ‘red’, sam => ‘blue’); $favourite{joe} = ‘red’; $favourite{sam} = ‘blue’;

Προγραμματίζοντας με Perl Δομές Ελέγχου : if ( cond ) {... } elsif ( cond ) {... } else {... } Label foreach var ( list ) {... } continue {... } Label while ( cond ) {... } continue {... } Label for ( init-expr ; cond-expr ; incr-expr ) {... } Λέξεις κλειδιά για καθορισμό ροής ελέγχου next ( continue στη C ) last ( break στη C ) return redo statement if cond ; statement unless cond ; statement while cond ; statement until cond ; statement foreach list ; Λογικοί τελεστές expr and expr expr && expr expr or expr expr || expr

Προγραμματίζοντας με Perl Ορισμός και κλήσεις υπό-ρουτινών : foo(); # κλήση υπό-ρουτίνας με παρενθέσεις – αν ο ορισμός της γίνεται # πιο μετά στον κώδικα (αν έχει παραμέτρους μπαίνουν μέσα) &foo; # γίνεται όμως μπορεί να προκαλέσει προβλήματα σε περίπτωση # που υπάρχουν και παραμέτροι sub foo{…} # ορισμός foo; # αν γίνει πρώτα ο ορισμός η κλήση μπορεί να γίνει έτσι foo %z; # και με παραμέτρους Παράμετροι στις υπό-ρουτίνες : $_[0], $_[1], … # προσπέλαση my ( $x, $y, $z ) # αντιγραφή παραμέτρων σε μεταβλητές

Προγραμματίζοντας με Perl Υπό-ρουτίνες (συνέχεια) : return 42, %z; Παράδειγμα: sub list{ (4, 5, 6) } sub = (4, 5, } $x = list;  6 (last element) $x = array;  3 (number of = list;  (4, 5, = array;  (4, 5, 6)

Προγραμματίζοντας με Perl Κανονικές Εκφράσεις : =~  $x =~ /abc/; # επιστρέφει true αν το $x ταιριάζει # με την κανονική έκφραση ανάμεσα # στα slashes s  $x =~ s/abc/aBc/; # upcase b - (χρήση του s) !~  $x !~ /abc/; # δεν περιέχει το abc m  $x =~ m/abc/; #το ίδιο με χωρίς το m ^  $x =~ /^abc/; #αν ξεκινά με abc $  $x =~ /abc$/; #τελειώνει με abc i  $x =~ /abc/i; #case insensitive

Προγραμματίζοντας με Perl Κανονικές Εκφράσεις (συνέχεια) = split /,/, $line; # χωρίζει το string στη μεταβλητή $line # με βάση την κανονική έκφραση # ανάμεσα στα slashes και φυλάει το # κάθε string σαν εγγραφή του $x =~ / #επιτρέπει τα σχόλια ανάμεσα στην κανονική έκφραση a # match 'a’. # followed by any character c # then followed by the 'c‘ character /x;

Προγραμματίζοντας με Perl Σημαντικά string functions : chomp : $line = “line\n”; chomp $line; print $line; print “ new”  line new. (concatenate) : $one = “1”; $two = “2”; $con = $one.$two; print $con;  12

Υλοποίηση upload-download mail Μειονέκτημα (περισσότερος κώδικας): Δημιουργία Socket/Connection Bash : exec 5<>/dev/tcp/$popserver/26 Perl : use IO::Socket::INET; $socket = new IO::Socket::INET (PeerAddr => $_[0], PeerPort => 26, Proto => "tcp“, Type => SOCK_STREAM) or die "Couldn't connect to $_[0] : $!\n"; $line = ;

Υλοποίηση upload-download mail Περισσότερος Κώδικας (συνέχεια) : Μετατροπή εντολής group by From (pipes) Bash : from=`cat $file | sed -n '1,/^$/p' | grep ^"From:" | sed 's/From: //' | head -n 1 | cut -d' ' -f2 | cut -f1 | sed 's/<//'` Perl : open = = # αφήνουμε τις γραμμές που # έχουν το = split(' ', $pipe[1]); # κρατούμε τo σωστό = $ [1]); # χωρίζεις το $username_from = $ _split[0];# κρατάς το Username $username_from =~ s/<//;

Υλοποίηση upload-download mail Περισσότερος κώδικας (συνέχεια) : Μετατροπή εντολής Sed Bash : cat $file | sed '1,/^$/d' | sed 's/ /\n/g' | sed 's/[^[:alpha:]]/\n/g' | sed '/^$/d' | tr '[:upper:]' '[:lower:]' >> /tmp/$USER/temp Perl : foreach $tline chomp $tline; if ($v == 0){ # προσπερνώ μέχρι να βρω άδεια γραμμή = body if ($tline =~ /^$/) {$v = 1;} #sed '1,/^$/d‘ }else{ $tline2 = $tline; if ($tline2 =~ /^$/) {next;} #sed = split (/ /, $tline); foreach $w $w2 = $w; if ($w2 =~ /[^[:alpha:]]/) {next;} $w =~ tr/A-Z/a-z/; print TEMP $w,"\n“;}} }

Υλοποίηση upload-download mail Πλεονεκτήματα : Ανάγνωση και επεξεργασία αρχείου Bash : cat $file | sed '1,/^$/d' > /tmp/$USER/temp Perl : open FILE, = ; # ανάγνωση αρχείου close FILE; foreach $line # προσπέλαση αρχείου … } Ανάγνωση αρχείων από directory Bash : for file in /tmp/$USER/* Perl : opendir(DIR, = readdir(DIR); closedir(DIR);

Συμπεράσματα Αν και δεν γνωρίζαμε Perl από το παρελθόν, την βρήκαμε μια εύκολη γλώσσα για να μάθει κανείς. Περισσότερος κώδικας σε Perl, όμως εύκολος να γραφτεί. Μισό χρόνο απ’ ότι στο Bash. Πολύ εύκολο να βρεθούν και να διορθωθούν λάθη στον κώδικα  περισσότερες μεταβλητές πίνακες.

Βιβλιογραφία Learning Perl, Randal L. Schwaartz Programming Perl, Larry Wall tperl/perlreg.htm#DoingSubstitutions eb/cgi/perlmanual/perlfunctstring.html perl-in-10-easy-lessons-lesson-1_120.html

Ευχαριστούμε για την προσοχή σας! Απορίες;