Посмотрите, как это делает File::Spec
.
Здесь.
Ответ на комментарий:
Я не говорю, чтобы загрузить File :: Spec.Я говорю, посмотрите, как это делает его "подкласс".На самом деле это примерно так:
- Объекты полиморфизируются.
- Полиморфизм - это самый простой способ сделать то, что вам нужно.
- Создайте общий шаблон реализации,
- , затем реализуйте его для тех платформ, на которых вы будете его использовать.
File :: Spec пытается сделать их все, потому что это модуль CPAN.Но просто посмотрите, как это происходит, посмотрите, как складывает платформ в кейсы.Поскольку это основной и рекомендуемый модуль, вы, вероятно, не ошибетесь, следуя шаблону.
Если ваши платформы не соответствуют этому шаблону, то вам придется использоватьдополнительные методы, чтобы понюхать платформу.Различия в файловой системе могут быть не единственными, о которых вам нужно беспокоиться.
Я не совсем на 100% доволен тем, как FS реализует полиморфизм, если быть точным.Но это - это стратегия.И пример работы с платформами с полиморфизмом.
Просто для обсуждения: я предпочитаю дополнительный класс.Я бы основывал все реализации FS на абстрактном классе.Вдобавок к этому я бы разделил это поведение на реализации, а поверх этого я бы поместил один из моих любимых шаблонов класса Facade / Factory, который является публичным лицом класса.