我有一個perl程序,其中有一個變量,其值是文件的完整路徑。如何從包含完整文件路徑的字符串在perl中分離文件名和文件路徑
例如:
$FullPath = "C:\sample\file.txt";
我想提取在$文件名可變的文件名(file.txt
)和FilePath
變量路徑(C:\sample\
)。
任何人都可以請幫我做一個示例代碼。
感謝
我有一個perl程序,其中有一個變量,其值是文件的完整路徑。如何從包含完整文件路徑的字符串在perl中分離文件名和文件路徑
例如:
$FullPath = "C:\sample\file.txt";
我想提取在$文件名可變的文件名(file.txt
)和FilePath
變量路徑(C:\sample\
)。
任何人都可以請幫我做一個示例代碼。
感謝
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();
我建議你使用splitpath
從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
我用你認爲上面的代碼,但作爲預期的輸出不來了。輸出如下:$ path =「./」$ name =「C:\ sample \ file.txt」 – Rahul 2013-03-28 07:54:17
這是因爲你的代碼是越野車。您實際上並沒有在'$ FullPath'中放置'C:\ sample \ file.txt'。查看更新。 – ikegami 2013-03-28 08:01:17
實際上有一個html頁面,其中使用瀏覽按鈕選擇了一個文件,當按下提交按鈕時,該值應該傳遞給perl程序。所以當我使用瀏覽按鈕選擇一個文件,並按下提交按鈕時,傳遞給perl程序的值是「C:\ sample \ file.txt」。但我只想要文件名。所以你可以建議一些方法來做到這一點? – Rahul 2013-03-28 08:03:11