I thought grep will *only* return the elements of the array for which the first expression is true. Since the first expression glob("$_/f*") is only true for 'dir1', it should only return that element of the directory list (even though glob returns 3 files in that directory). The glob finds no elements in the other 2 directories, so it should be undefined which would evaluate as false.
in reply to Re: Using grep and glob to find directories containing file
in thread Using grep and glob to find directories containing file
I don't understand why the elements of glob("$_/f*") returned for the first directory entry seemingly spill over to subsequent directories in the (implicit) grep iteration.