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

Παραδείγματα διαχείρισης δεδομένων από text files

Ας υποθέσουμε ότι μας έδωσαν το αρχείο δεδομένων kairos.txt που περιέχει τα ακόλουθα:

Athens:-4:40:

Thessaloniki:-7:35:

Patra :19:80:

Larrisa:04:16:

Volos:32:55:

Karditsa:12:50:

Psaxna:14:32:

Kamena Vourla :10:20:

Κάθε γραμμή εδώ αναφέρει το όνομα της πόλης, τη χαμηλότερη και τη μεγαλύτερη θερμοκρασία της. Το αρχείο μας είναι ASCII delimited και delimiter είναι το :

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

#!/usr/bin/perl -w

use strict;

print " Kalosirthate \n";

open (FILE,'kairos.txt') || die "Den mporo na to anoikso\n $!" ;

Κατά τα γνωστά.

while (<FILE>)

{

my @temaxio = split (/:/,$_);

Η Perl διαβάζει το αρχείο γραμμή γραμμή (μια κάθε φορά) και τοποθετεί το περιεχόμενο στη scalar μεταβλητή $_. Εμείς σπάμε αυτή τη scalar σε μια λίστα με σημείο χωρισμού τον delimiter (το : ). Έτσι κάθε τιμή βρίσκεται τώρα σε ένα ξεχωριστό στοιχείο της array @temaxio

my $mesos = ($temaxio[1]+$temaxio[2])/2;

Υπολογίζουμε τον μέσο όρο.

print " H $temaxio[0] me mikri $temaxio[1] kai megali $temaxio[2] exei meso oro $mesos\n";

Τυπώνουμε το αποτέλεσμα της γραμμής.

}

Το loop ολοκληρώνεται και ξαναρχίζει από την αρχή με την επόμενη γραμμή του kairos.txt

Λίγο διαφορετική θα είναι η προσέγγισή μας αν το αρχείο (που τώρα λέγεται kairos2.txt) έχει την ακόλουθη (επίσης πολύ συνηθισμένη μορφή):

Athens

-4

40

Thessaloniki

-7

35

Patra

19

80

Larrisa

04

16

Volos

32

55

Karditsa

12

50

Psaxna

14

32

Kamena Vourla

10

20

Εδώ το πρόγραμμά μας θα είναι:

#!/usr/bin/perl -w

use strict;

print " Kalosirthate \n";

open (FILE,'kairos2.txt') || die "Den mporo na to anoikso\n $!" ;

Κατά τα γνωστά.

my $count ;

Η μεταβλητή αρίθμησης. Με αυτή θα παρακολουθούμε σε ποια σειρά του αρχείου βρισκόμαστε.

my $polis;

Όνομα πόλης.

my $max;

Μέγιστη θερμοκρασία.

my $min;

Ελάχιστη θερμοκρασία

while (<FILE>)

{

$count++;

Η $count αυξάνει κατά μια μονάδα.

if ($count == 1)

{

$polis = $_;

Αν η $count είναι ίση με 1 (προσοχή στα δύο ίσον) τότε η $_ περιέχει το όνομα της πόλης.

chomp $polis;

}

Πιθανόν να έχει πατηθεί Enter μετά την εισαγωγή του ονόματος της πόλης. Γι’ αυτό το καθαρίζουμε με το chomp.

elsif ($count == 2)

{

$min = $_;

chomp $min;

}

Αν η $count είναι ίση με 2 τότε βρισκόμαστε παρακάτω (έχει ήδη προηγηθεί άλλο πέρασμα του loop) και η $_ περιέχει την ελάχιστη θερμοκρασία.

else

{

$max = $_;

chomp $max;

Διαφορετικά η $_ μας εμφανίζει τη μέγιστη θερμοκρασία.

my $mesos = ($min+$max)/2;

print " H $polis me mikri $min kai megali $max exei meso oro $mesos\n";

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

$count =0;

}

Η τιμή της $count γίνεται πάλι μηδέν και ξεκινάμε με την επόμενη γραμμή που περιέχει το όνομα (και παρακάτω τα στοιχεία) μιας άλλης πόλης.

}

Το πρόγραμμά μας έχει τώρα ολοκληρωθεί.


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


 

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


© Eeei.gr 2009