On 6/24/21 2:46 AM, Fabien COELHO wrote:
>
> Bonjour Michaël,
>
>> Using grep() with "$re" results in all the fields matching. Using on
>> the contrary "/$re/" in grep(), like list_files(), would only match
>> the first one, which is correct.
>
> Ok, good catch. Perl is kind of a strange language.
Not really, the explanation is fairly simple:
grep returns the values for which the test is true.
grep ("$re",@values) doesn't perform a regex test against the values, it
tests the truth of "$re" for each value, i.e. it's more or less the same
as grep (1, @values), which will always returns the whole @values list.
By contrast grep (/$re/, @values) returns those elements of @values that
match the regex.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com