2011-07-08 102 views
0

試圖創建一個目錄樹,其中一個目錄的名稱中具有正斜槓(/)。查看$藝術家變量爲藝術家的名字和我嘗試創建目錄。在目錄名稱中使用正斜槓創建目錄樹

#!/usr/bin/perl 

use warnings; 
use strict; 
use File::Path qw(make_path); 
my $srcpath = '/home/<username>;/music'; 
my $artist = ""; 
my $album = 'somealbum'; 

# Using single quotes 

#t1 
$artist = 'AC/DC'; 
make_path("${srcpath}/t1/${artist}/${album}/"); 

#t2 
$artist = 'AC//DC'; 
make_path("${srcpath}/t2/${artist}/${album}/"); 

#t3 
$artist = 'AC\/DC'; 
make_path("${srcpath}/t3/${artist}/${album}/"); 

# Using double quotes 

#t4 
$artist = "AC/DC"; 
make_path("${srcpath}/t4/${artist}/${album}/"); 

#t5 
$artist = "AC//DC"; 
make_path("${srcpath}/t5/${artist}/${album}/"); 

#t6 
$artist = "AC\/DC"; 
make_path("${srcpath}/t6/${artist}/${album}/"); 

#t7 
$artist = "AC\\/DC"; 
make_path("${srcpath}/t7/${artist}/${album}/"); 

目錄樹我想要(5個文件夾):
/- >首頁 - > <用戶名> - >音樂 - > AC/DC - > somealbum

目錄樹,我得到(6文件夾):
/- >首頁 - > <用戶名> - >音樂 - > AC - > DC - > somealbum

+0

有沒有想過爲什麼你會看到帶連字符的文件名代表實際上使用斜槓的實體? AC-DC是合法的文件或路徑名稱。 12-23-2009是一個合法的文件或路徑名,而2009年12月23日不是(除非你真的指的是目錄'23'中的目錄'12'中的2009文件)。 – DavidO

回答

6

的反斜槓字符是一個文件或目錄的非法字符名稱。您需要替換其他字符,如短劃線字符。

+0

不能相信我需要提醒一下。 –

1

這是不可能的,不是因爲Perl,而是因爲OS文件系統層禁止它。沒有轉義字符可以讓您在路徑組件中嵌入/(或NUL)。

此的處理的通常方法是通過應用特定的編碼,如治療=nNUL=s/,和作爲=e=。 (我不知道任何實際使用特定編碼的應用程序;這僅僅是一個例子)