В юниксе в папках bin находятся только исполняемые файлы, остальные части программ распределены по другим папкам согласно их назначению — библиотеки отдельно, конфиги отдельно, и т.д.
А то что предлагаете вы — именно что помойка. Не говоря уже о том что программам могут потребоваться разные версии одной и той же DLL, а они у вас все в одной папке, где возможна только одна версия.
На самом деле можно устанавливать куда угодно, а для указанных целей достаточно добавить %perl%/bin в PATH (это умеет инталлятор Active Perl), а в папку c:\usr\bin поместить только копию perl.exe (который всего лишь загрузчик интерпретатора расположенного в DLL)
Насколько я понял исходная задача — иметь возможность привязать все потоки порожденные приложением к этому приложению.
Для этого проще всего использовать ThreadGroup.
Создайте корневой поток приложения в отдельном ThreadGroup. Все пороженные им потоки будут добавлены в этот ThreadGroup. Если же поток создаст свой ThreadGroup то он также будет добавлен в родительский ThreadGroup, и обходя дерево групп можно перечислить все потоки приложения, ну или обратная задача — имея конкретный поток сказать какой группе он принадлежит.
А то что предлагаете вы — именно что помойка. Не говоря уже о том что программам могут потребоваться разные версии одной и той же DLL, а они у вас все в одной папке, где возможна только одна версия.
Для этого проще всего использовать ThreadGroup.
Создайте корневой поток приложения в отдельном ThreadGroup. Все пороженные им потоки будут добавлены в этот ThreadGroup. Если же поток создаст свой ThreadGroup то он также будет добавлен в родительский ThreadGroup, и обходя дерево групп можно перечислить все потоки приложения, ну или обратная задача — имея конкретный поток сказать какой группе он принадлежит.