Οι 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";