http://www.perlmonks.org?node_id=1016840


in reply to Re^3: Using grep and glob to find directories containing file
in thread Using grep and glob to find directories containing file

I still think something is wrong...

If I do something like:
mkdir dir1 dir2 touch dir1/f{1,2}
and then run:
foreach (1,2,3,4) { print "dir1\n" if glob("dir1/f*"); print "dir2\n" if glob("dir2/f*"); }
I get 'dir1' printed 3 times (NOT 4). But if I unwind the loop:
print "dir1\n" if glob("dir1/f*"); print "dir2\n" if glob("dir2/f*"); print "dir1\n" if glob("dir1/f*"); print "dir2\n" if glob("dir2/f*"); print "dir1\n" if glob("dir1/f*"); print "dir2\n" if glob("dir2/f*"); print "dir1\n" if glob("dir1/f*"); print "dir2\n" if glob("dir2/f*");
Then I get 'dir1' printed 4 times!!!

In other words, I can understand why 'glob' is stateful when it is the loop iterator. But it makes no sense (to me) (and seems wrong) for it to be stateful when it is not the iterator. Because then unwinding a loop give a different answer.