thanks to the help from the CB I have collected some answers.
- I am still confused about the way $! behaves in this case, but I am not supposed to understand it (unless I learn the internals of Perl) and I am only supposed to use it when any error was signaled.
- The desired outcome of bsd_glob can be achieved by passing the flag !GLOB_NOCHECK. Then the returned list will not contain the search pattern upon unsuccessful globbing. In my case this was hard because the real-world application in question sometimes uses a full pathname as a search pattern.
- For performance and sanity my routine will first do a test for file-existance and then try to glob it. It feels clumsy, though.
- Another way to check the outcome would be to undef $! before calling bsd_glob but since the documentation does not explicitly state the observed behaviour I will not rely on it to work.
I think this sums it up.
you begin bashing the string with a +42 regexp of confusion