Я также обнаружил, что могу создать один файл, подобный этому:
package Type2;
=for interface
[interface: pure]
static Type2();
=cut
require Type2;
package Type1;
use Type2;
=for interface
[interface: pure]
static Type1();
Type2 make2();
=cut
Тогда мои файлы Type1.pm и Type2.pm такие же, как и раньше, но без интерфейса POD.
При такой настройке plc создает одну dll, которая включает оба класса, а класс Type1 может создавать и возвращать экземпляры Type2.
На самом деле это оказалось более удобным для меня, потому что мои классы Type1 и Type2 являются частью устаревшей библиотеки, которую я хочу сделать доступной для кода C # без внесения в них обширных специфических изменений .NET. Я создал один файл pm для моей сборки C #, и в него я включил определения интерфейса для доступа к устаревшим методам библиотеки и несколько специфических методов .NET для свойств и преобразования сложных возвращаемых значений структуры данных хеш / массива Perl в Структуры данных Hashtable и Array / ArrayList.