Come conoscere il numero di elementi nella matrice Perl

Il compito. Nel codice Perl programma un array di @arr (le prime tre lettere della parola "array"). In questa matrice ci sono i valori. Devo sapere quanti in questo array contiene elementi.

Ci sono diversi modi per risolvere questo problema.

Utilizzare scalare contesto

Se utilizzare un array скалярном contesto, questo valore sarà il numero di elementi in un array:

my $number_of_elements = scalar(@arr);

Programma di esempio:

▶ Run
#!/usr/bin/perl

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

print scalar(@arr);

Il programma visualizzerà il numero 3.

Scalare il contesto è possibile ottenere non solo con l'aiuto di scalar(), ma con l'aiuto di qualche operazione aritmetica, che non cambia il numero, ad esempio, aggiungere/togliere zero o moltiplicare/dividere per unità di:

my $number1 = @arr + 0;
my $number2 = @arr - 0;
my $number3 = @arr * 1;
my $number4 = @arr / 1;

Utilizzare una variabile con l'indice dell'ultimo elemento

Un altro modo per capire la lunghezza dell'array è di utilizzare una variabile associata una matrice e che contiene il numero dell'ultimo elemento. Se la matrice si chiama @arr, la variabile sarà chiamato $#arr. Il primo elemento in Perl matrice ha il numero 0, quindi per ottenere il numero di elementi, è necessario a tale variabile aggiungere 1.

my $number_of_elements = $#arr + 1;

Come sono considerati diversi elementi e undef

Non importa quali valori contenuti in un array. Ci possono essere come semplici stringhe e numeri, e strutture complesse.

Se la matrice contiene il valore undef, sono anche considerati. Ecco un esempio di una matrice in cui si trovano 4 elementi:

my @arr = (1, undef, 3, undef);

Un modo sbagliato di conteggio — utilizzare length()

Ecco un esempio di programma. Il programma visualizza il numero 1 e possono essere erroneamente supporre che length() applicato alla matrice restituisce il numero di elementi in esso.

▶ Run
#!/usr/bin/perl

my @arr = ('one');

print length(@arr);

Ma questo è un presupposto errato. Per verificare questo, è possibile verificare che per una serie di my @arr = ('one', 'two', 'three') length()proprio restituisce 1.

length() applicata alla matrice restituisce il numero di elementi e il numero di cifre del numero di elementi. Se la matrice contiene 9 o meno elementi, length(@arr) restituisce 1 se la matrice contiene da 10 a 99 elementi, length(@arr) restituirà 2 e così via.

Temi correlati

Altri articoli