17

Java の場合、次を使用してパス セパレータを取得できます。

System.getProperty("path.separator");

Perlにも同様の方法はありますか? 私がやりたいのは、dir、直接のサブディレクトリを見つけることだけです。2 つの引数$a$b;が与えられているとします。パスセパレーターに基づいて最初のものを分割し、最後のフラグメントを除いて再度結合し、2 番目の引数と比較しています。

問題は、コードが汎用的でなければならないことです。そのためには、システムに依存するパスセパレーターが何であるかを知る必要がありますか?

4

3 に答える 3

26

手作業でファイルパスを作成しないでください。代わりに、File::Specモジュールを使用してください。

($volume, $directories,$file) = File::Spec->splitpath( $path );
@dirs = File::Spec->splitdir( $directories );
$path = File::Spec->catdir( @directories );
$path = File::Spec->catfile( @directories, $filename );
于 2010-05-24T13:50:40.643 に答える
9

受け入れられた答えはあなたの本当の問題を解決しますが、本当にセパレーターを取得したい場合(perlコアモジュールのみを使用):

my $sep = File::Spec->catfile('', '');

これにより、2 つの空のファイル名が現在のシステムの区切り記号と結合され、区切り記号だけが残ります。

于 2017-04-18T21:21:31.933 に答える
8

SL定数はFile::Utilで使用できます。

于 2010-05-24T13:37:46.723 に答える