in reply to Can't modify private array in concatenation?

Here are a couple of ways. (There are more.)

  1. @list = (@list, bsd_glob ("$DIR/*XYZ", GLOB_QUOTE )); ...
  2. push @list, bsd_glob ("$DIR/*XYZ", GLOB_QUOTE ));

The . operator is strictly for string concatenation. And in your code it attempts to "coerce" the list into a string.

-Paul