Perl Lists: Utilizing List::Util - First Up On the Block (
Page 2 of 5 )
The first{block}list subroutine, as stated above, returns the first value in a list. If you have a list that contains the following data, in this order: Hercules, Perseus, Theseus, and Mister T (basically a list of Greek heroes) and you use the first{block}list subroutine on it, then your result would be: Hercules. This is because he is the first piece of data in the list. Don't believe it? Let's go to the code:
#!/usr/bin/perl
use List::Util qw(first);
@Greek=('Hercules','Perseus','Theseus','Mister T');
$Front = first {$_} @Greek;
print $Front;
The result?
Hercules
We can do the same with numbers:
#!/usr/bin/perl
use List::Util qw(first);
@Nums=(1,2,3,4);
$Front = first {$_} @Nums;
print $Front;
Which results in:
1
But what if we don't want just the first value in a list? What if we want to set certain criteria that must be met? We can do so by adding conditionals to our subroutine:
#!/usr/bin/perl
use List::Util qw(first);
@Nums=(1,2,3,4);
$Front = first {$_>2} @Nums;
print $Front;
In the above code, we modify the parameter by adding a greater than two conditional. Simply put, we want the first value larger than the number 2. The result, of course, is:
3
And likewise, we can also use things like AND and OR as well:
#!/usr/bin/perl
use List::Util qw(first);
@Nums=(1,2,3,4);
$Front = first {$_<5 && $_>3} @Nums;
print $Front;
Here, we use the following criteria: less than five, yet greater than three. This returns the number four.