grep EXPR,LIST
Panašus, bet ne toks pat kaip ir grep(1) ir šio giminaičiai. Tiesą sakant, jis nėra apribotas naudojimui vien su reguliariaisiais reiškiniais (regular expression).
Prilygina BLOCK arba EXPR kiekvienam LIST elementui (lokaliai nustatant $_
kiekvienam elementui) ir gražina sąrašo reikšmę, susidedančią iš tų elementų, kuriems išsireiškimas buvo prilygintas true. Skaliariniame kontekste gražina skaičių, kiek kartų išsireiškimas buvo prilygintas true.
@foo = grep(!/^#/, @bar); # weed out comments
or equivalently,
@foo = grep {!/^#/} @bar; # weed out comments
Pažymėtina, kad $_
yra alternatyvus vardas (alias) sąrašo reikšmei, taigi, jis gali būti naudojamas pakeisti LIST elementams. Nors tai yra naudinga ir palaikoma, taip pat gali atnešti keistų rezultatų, jei LIST'o elementai nėra kintamieji. Panašiai, grep gražina alternatyvius vardus (alias) į originalųjį sąrašą, kaip for ciklo indeksinis kintamasis pavadina sąrašo elementurs. Tai yra, keičiant sąrašo elementą, gražintą grep (pvz. foreach
, map
ar kitas
grep
) iš tikrųjų pakeičia elementą originaliame sąraše. To dažniausia reikėtų išvengti rašant švarų kodą.
Taip pat žr. map BLOCK ar EXPR rezultatų sudarytiems sąrašams.