4

パスを分割したいのですが、誰か助けてもらえますか?

私の入力は次のとおりです。

$getpath = "/u/project/path/file.name";

/u/project/pathある変数と別の変数に分割したいfile.name

4

5 に答える 5

9

File::Basenameは、必要な情報を抽出するのに役立ちます (コア モジュールの一部です)。

  my($filename, $directories, $suffix) = fileparse($path);
于 2013-04-12T07:51:17.137 に答える
7

まず第一に、CPAN で検索してみてください。次に、File::Spec モジュールを使用することをお勧めします。例えば:

use File::Spec;
($volume,$directories,$file) = File::Spec->splitpath( $path );

$directories は "/u/project/path" になり、$file は "file.name" になります。

File::Spec モジュールは、Unix(Linux)、Mac、Win32、OS2、VMS の 5 つのオペレーティング システムに対応しています。また、このモジュールは、catpath、updir、file_name_is_absolute などの他のファイル操作も多数提供します。別のシステムでコードを変更する必要はありません。

参照:ファイル::スペック

于 2013-04-12T08:38:46.657 に答える
2
my $getpath = "/u/project/path/file.name";
my @arr=split /\//,$getpath;
my $filename=$arr[(scalar(@arr))-1]; #will give you the filename
my $path_no_filename= join "/",@arr[0..(scalar(@arr)-2)]; #will give everything except the filename
于 2013-04-12T07:47:23.323 に答える
2
my($path, $file) = $getpath =~ m{(.+)/([^/]+)$};

このための素晴らしいクロスプラットフォーム モジュールもあります。 Path::TinyFile::Specを参照してください。

于 2013-04-12T07:45:39.627 に答える
0
my $f = Mojo::File->new($getpath);
print($f->dirname, "::", $f->basename);

クイックテスト:

> perl -Mojo -E 'my $f = f("/u/project/path/file.name"); say $f->dirname, "::", $f->basename' 
/u/project/path::file.name
于 2020-06-29T10:52:58.663 に答える