Task. In the code of the Perl program has an array
@arr (the first three letters from the word "array"). In this array has some values.
Need to know how many in this array contains elements.
There are several ways to solve this problem.
If you use the array in scalar context, then this value will be the number of elements in the array:
my $number_of_elements = scalar(@arr);
my @arr = ('one', 'two', 'three');
The program displays the number 3.
Scalar context can be obtained not only by using
scalar(), but with the help of some arithmetic operations, which does not change the number, for example, to add/subtract zero or multiply/divide unit:
my $number1 = @arr + 0;
my $number2 = @arr - 0;
my $number3 = @arr * 1;
my $number4 = @arr / 1;
Another way to find out the length of the array is to use a variable associated with the array and which contains the number of the last element. If the array is called
@arr, such a variable will be called
$#arr. The first element in a Perl array has number 0, so to get the number of items you need to add this variable to 1.
my $number_of_elements = $#arr + 1;
It does not matter what values are contained in the array. There can be simple strings and numbers and complex structures.
If the array contains the value undef, then they too are. Here is an example of an array which contains 4 elements:
my @arr = (1, undef, 3, undef);
Here is a sample program. The program displays the number 1 and can wrongly assume that
length() applied to an array returns the number of elements in it.
my @arr = ('one');
But this is an incorrect assumption. In order to verify this you can check that for an array
my @arr = ('one', 'two', 'three')
length()will return 1.
length() applied to the array return the number of elements and the number of digits in the number of elements. If the array contains 9 or fewer items, then
length(@arr) will return 1 if the array contains from 10 to 99 elements,
length(@arr) will return 2, and so on.