1

我有一个 perl 程序,其中有一个变量,其值为文件的完整路径。

例如:

$FullPath = "C:\sample\file.txt";

我想提取file.txt$FileName 变量中的文件名 ( ) 和变量中的路径 ( C:\sample\) FilePath

任何人都可以通过示例代码帮助我做到这一点。

谢谢

4

2 回答 2

3
use File::Basename qw( fileparse );
my ($fname, $dir) = fileparse($FullPath);

请注意,您的$FullPath不包含C:\sample\file.txt. 要得到它,你需要

my $FullPath = "C:\\sample\\file.txt";

或者

my $FullPath = 'C:\sample\file.txt';

一直用use strict; use warnings;!它会因为没有意义而发出警告"\s"


要在任何机器上解析 Windows 路径,您可以使用以下命令:

use Path::Class qw( foreign_file );
my $file = foreign_file('Win32', $FullPath);
my $fname = $file->basename();
my $dir   = $file->dir();
于 2013-03-28T07:40:27.097 回答
0

我建议你使用splitpathfrom File::Spec::Functions。此函数将卷、目录和文件名作为三个单独的值返回。

下面的代码将这些值放入一个数组中,然后删除第二个(目录)元素并将其附加到第一个元素,在@path.

use strict;
use warnings;

use File::Spec::Functions 'splitpath';

my $full_path = 'C:\sample\file.txt';
my @path = splitpath $full_path;
$path[0] .= splice @path, 1, 1;

print "$_\n" for @path;

输出

C:\sample\
file.txt
于 2013-03-28T10:31:13.223 回答