2

Win32 と Linux OS の両方で実行する必要がある perl モジュールがあります。このモジュールは Win32::Process::List を使用して、Win32 でのサードパーティ アプリケーションとの同時実行の問題を回避します。Linux で実行する場合、同等の要件はありません。

これまでのところ、Win32 固有のものを Linux バージョン用にコメントアウトして、同じモジュールの 2 つのコピーを作成することができました。このエラーが発生しやすいアプローチには明らかに満足していません。

Linux では、win 固有のものは「make install」しないことは明らかです。require Win32::Process::List;代わりに を使用してコードでよりソフトなアプローチを試みましたがuse Win32::Process::List;、前者は合格の利点を提供しperl -c mymoduleますが、通常の使用ではまだ失敗しています。

したがって、私の質問: 2 つの異なるコード ベースを維持する以外に、そのような状況に対処するためのより堅牢な方法はありますか?

4

1 に答える 1

4

How about using the if module, which allows you to use a module according to compile-time conditions.

use if $^O eq 'MSWin32', 'Win32::Process::List';

The $^O built-in variable gives the name of the operating system, and is always MSWin32 for any Windows system.

于 2013-01-29T14:20:42.647 に答える