[eeei.gr Logo]
Επικοινωνία
Ταυτότητα
Μαθήματα Internet | Μαθήματα Προγραμματισμού | Net Business | Τα νέα του Internet | Ο Κόσμος του Αύριο

Χρήση Regular Expressions αντί κλασικών προγραμματιστικών εργασιών

Οι Regualr Expressions είναι πολύ χρήσιμες όταν θέλετε να ελέγξετε τα δεδομένα που πληκτρολογεί ο χρήστης ή να επιθεωρήσετε τα περιεχόμενα ενός αρχείου κειμένου. Μπορούν όμως να αντικαταστήσουν ακόμη και «παραδοσιακές» προγραμματιστικές ενέργειες, διευκολύνοντας το έργο σας. Στο ακόλουθο παράδειγμα ο χρήστης μας δίνει έναν αριθμό και εμείς του απαντούμε αν ήταν θετικός ή αρνητικός.

#!/usr/bin/perl -w

use strict;

print " Kalosirthate \n";

Καλωσορίζουμε τον χρήστη.

my $quit = 1;

while ($quit == 1)

Όσο η $quit έχει την τιμή 1 θα επαναλαμβάνεται συνεχώς ο κώδικας που ακολουθεί.

{

print "Dose to numero \n";

my $number = <STDIN> ;

chomp ($number);

Ο χρήστης πληκτρολογεί ένα νούμερο.

if ($number =~ /\D/)

{

print "Thelo thetiko arithmo\n";

}

Αν πληκτρολογήσει οτιδήποτε εκτός από 0123456789 του ζητούμε ένα θετικό αριθμό. (Αν η εφαρμογή μας δεχθεί αρνητικό νούμερο, π.χ. –78 τότε το \D θα αναγνωρίσει το πρόσημο – και θα τυπώσει το Thelo thetiko arithmo).

elsif ($number =~ /(0*)0$/ )

{

print " --------- THELO THETIKO ARITHMO ------------\n";

}

Αν πληκτρολογήσει ένα ή περισσότερα μηδενικά του ζητούμε ένα θετικό αριθμό. Το 0$ σημαίνει ότι το τελευταίο ψηφίο είναι 0, ενώ το 0* σημαίνει ότι μπροστά του μπορεί να υπάρχει κανένα, ένα ή περισσότερα μηδενικά. Η εφαρμογή λοιπόν θα διαμαρτυρηθεί αν δει 0, 00, 000000 κ.λπ.

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

elsif ($number =~ /[02468]$/)

’ρτιοι είναι μόνο οι αριθμοί που τελειώνουν σε 02468. ’ρα ένα pattern matching από μια απλή regular expression αρκεί για να ανακαλύψουμε τη φύση των δεδομένων που πληκτρολόγησε ο χρήστης.

elsif ($number %2 == 0)

Εναλλακτικά (με πιο προγραμματιστικά κλασικό δηλαδή με μαθηματικό τρόπο) μπορούμε να χρησιμοποιήσουμε το modulus (%) που μας δίνει το υπόλοιπο μιας διαίρεσης (προσοχή, όχι το αποτέλεσμα αλλά το υπόλοιπο, αν θέλαμε το αποτέλεσμα θα γράφαμε $number / 2).

Γνωρίζουμε ότι όλοι οι άρτιοι αριθμοί διαιρούμενοι με το 2 μας δίνουν μηδέν. ’ρα το $number %2 θα πρέπει να είναι 0 (υπενθυμίζουμε ότι το ίσον στην Perl γράφεται με διπλό ίσον, καθώς το μονό χρησιμοποιείται για να δώσει τιμή σε μια μεταβλητή).

{

print " --------- ZIGOS ------------\n";

$quit =2;

}

Εκτυπώνουμε το αποτέλεσμα στον χρήστη.

else

{

print " --------- MONOS ------------\n";

$quit=2;

}

Αν ο αριθμός δεν είναι ζυγός τότε υποχρεωτικά θα είναι μονό. Εκτυπώνουμε λοιπόν το αποτέλεσμα στον χρήστη.

}

Κλείνουμε τη while και έχουμε ολοκληρώσει την εφαρμογή μας. Αν θέλετε μπορούμε να συμπληρώσουμε ακόμη και έναν αποχαιρετισμό.

print "Ευχαριστούμε που χρησιμοποιήσατε το πρόγραμμά μας\n";


Τρέχουσα Ενότητα: Perl


 

Φιλικά - συνεργαζόμενα sites: Left Handed Products


© Eeei.gr 2009