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

Η θέση των περιεχομένων μιας array και οι λειτουργίες shift, unshift, push και pop

my @content = (12, 8, 15);

Με τον τρόπο αυτό δημιουργήσαμε μια λίστα με τις τιμές 12, 8 και 15

my $deytero = $content[1];

Τώρα δώσαμε στη (scalar) μεταβλητή $deytero την τιμή της δεύτερης εγγραφής της λίστας (δηλαδή 8). Το $content[1] σημαίνει πάρε τη δεύτερη εγγραφή και όχι την πρώτη επειδή η Perl ξεκινάει το μέτρημα από το 0. Έτσι, $content[0] είναι η τιμή 12 και $content[2] η τιμή 15.

my $trito = $content[-1];

Αν θέλουμε μπορούμε να μετρήσουμε και από το τέλος της array. Τότε όμως η αρίθμηση ξεκινάει από το –1 (αφού δεν υπάρχει –0) οπότε το $content[-1] θα έχει την τιμή 15, το $content[-2] θα έχει την τιμή 8 και το $content[-3] θα έχει την τιμή 12.

$content[0] = 7;

Με τον τρόπο αυτό αλλάζουμε μια τιμή της λίστας (array). Στην προκειμένη περίπτωση το 8 γίνεται 7.

my @new_content = @content[2,0];

Έτσι δημιουργούμε μια καινούρια array η οποία θα περιέχει τιμές από την ήδη υπάρχουσα. Το 15 που θα είναι πρώτο και το 7 που θα είναι δεύτερο (θυμηθείτε ότι το 12 άλλαξε παραπάνω και έγινε 7).

unshift (@content, 22);

Έτσι προσθέτουμε μια τιμή στην αρχή κάποιας array. Τώρα η @content περιέχει τα:

22, 7, 8, 15

unshift (@content, ('giorgos',25,36));

Μπορούμε να προσθέσουμε πολλά τιμές ταυτόχρονα και όλες θα τοποθετηθούν στην αρχή της array. Τώρα η @content περιέχει τα:

giorgos, 25, 36, 22, 7, 8, 15

push (@content, 1453);

Νέες τιμές μπορούν να προστεθούν και στο τέλος της array, χάρη στην push. Τώρα η @content περιέχει τα:

giorgos, 25, 36, 22, 7, 8, 15, 1453

Φυσικά και εδώ μπορούν να προστεθούν πολλές τιμές μαζί:

push (@content, (330, 1204));

Τώρα η @content περιέχει τα:

giorgos, 25, 36, 22, 7, 8, 15, 1453, 330, 1204

Προσέξτε ότι τα περιεχόμενα της array @content εμφανίζονται με αυτόν τον τρόπο (χωρισμένα με κενά και κόμματα) μόνο αν η εντολή εκτύπωσης περιέχει την @content μέσα σε εισαγωγικά. (π.χ. print "@content\n";). Αν εμείς δηλώσουμε:

print @content;

Τότε το αποτέλεσμα θα είναι:

giorgos253622781514533301204

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

Με το:

my $arxi = shift(@content);

Η scalar μεταβλητή $arxi αποκτά την τιμή giorgos και τα περιεχόμενα της array (@content είναι πλέον:

25, 36, 22, 7, 8, 15, 1453, 330, 1204

Αντίστοιχα, αν θέλουμε να πάρουμε την πρώτη τιμή από το τέλος δηλώνουμε:

my $telos = pop(@content);

Όπου $telos = 1204 και τα περιεχόμενα της array (@content είναι πλέον:

25, 36, 22, 7, 8, 15, 1453, 330, 1204

Θα τελειώσουμε με μερικά μικροπράγματα:

my @a = (12, 24, 48);

my $b = @a;

$b = 3 (η scalar μεταβλητή μας δίνει τον αριθμό των περιεχομένων της λίστας)

Το ίδιο περίπου αποτέλεσμα επιτυγχάνουμε και με τον τελεστή $# που μας δίνει τη θέση του τελευταίου στοιχείου της λίστας (στο παράδειγμα που ακολουθεί του three).

my @test = ('one', 'two', 'three');

my $last_element_number = $#test;

Εδώ το $last_element_number θα έχει την τιμή 2.

my @c = (153);

Λίστα με μια τιμή (153)

my @d = 12;

Λίστα με μια τιμή (12)

my @e = (128, 256, @a);

Λίστα με τις τιμές 128, 256, 12, 24, 48

my @f = (12 .. 25);

Λίστα με τις τιμές 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25

Όλες οι παραπάνω λειτουργίες δοκιμάστηκαν στο ακόλουθο παράδειγμα:

#!/usr/bin/perl -w

use strict;

my @content = (12, 8, 15);

my $deytero = $content[1];

print "$deytero\n";

my $trito = $content[-1];

print "$trito\n";

$content[0] = 7;

print "@content\n";

my @new_content = @content[2,0];

print "@new_content\n";

unshift (@content, 22);

print "@content\n";

unshift (@content, ('giorgos',25,36));

print "@content\n";

push (@content, 1453);

print "@content\n";

push (@content, (330, 1204));

print "@content\n";

print @content;

my $arxi = shift(@content);

print "$arxi\n";

print "@content\n";

my $telos = pop(@content);

print "$telos\n";

print "@content\n";

my @a = (12, 24, 48);

my $b = @a;

print "$b\n";

my @c = (153);

print "@c\n";

my @d = 12;

print "@d\n";

my @e = (128, 256, @a);

print "@e\n";

my @f = (12 .. 25);

print "@f\n";


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


 

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


© Eeei.gr 2009