```{index} single: first; List::Util function ``` ```{index} single: List::Util::first; Perl function ``` # first Return the first list element for which a block returns true. ## Synopsis ```perl my $val = first { BLOCK } @list; my $d = first { defined } @list; my $big = first { $_ > 100 } @values; ``` For each element `first` sets `$_` to that element and calls the block in scalar context; the first element for which the block returns true is returned. Remaining elements are not examined. ## What you get back The matching element (the original value, not the block's return). If no element matches — or the list is empty — returns `undef`. ## Examples ```perl my $first_defined = first { defined $_ } @list; my $first_big = first { $_ > $threshold } @measurements; my $first_admin = first { $_->is_admin } @users; ``` ## Differences from upstream Fully compatible with upstream. ## See also - `any` — boolean "at least one matches" test. - `grep` — collect every matching element. - `pairfirst` — pair-oriented counterpart.