2011-07-08 11 views
0

ディレクトリの1つにスラッシュ(/)が付いたディレクトリツリーを作成しようとしています。アーティスト名とディレクトリを作成しようとしたときの変数$ artistを参照してください。ディレクトリ名にスラッシュを含むディレクトリツリーを作成します。

#!/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

Directoryツリー(6フォルダ):
/- >ホーム - > <名> - >音楽 - > AC - > DC - > somealbum

+0

実生活ではスラッシュを使用するエンティティを表すハイフンでファイル名が表示されるのはなぜですか? AC-DCは正当なファイルまたはパス名です。 12-23-2009は合法的なファイルまたはパス名ですが、12/23/2009はそうではありません(ディレクトリ '12'の中のディレクトリ '23'の2009ファイルを実際には意味しない限り)。 – DavidO

答えて

6

スラッシュ文字は、ファイルまたはディレクトリの不正な文字です名。ダッシュ文字のように、他の文字と置き換える必要があります。

+0

Can not believe私はそれを思い出す必要があった。 –

1

Perlのためではなく、OSファイルシステム層がそれを禁止するので不可能です。パスコンポーネントに/(またはNUL)を埋め込むエスケープ文字はありません。

これは処理される通常の方法は、=ようNULとして=n/として=s、及び=eを治療するように、アプリケーション固有の符号化によるものです。 (実際にその特定のエンコーディングを使用するアプリケーションはわかりませんが、単なる例です)

関連する問題