1

ディレクトリの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

私が取得したディレクトリツリー(6つのフォルダ):
/->ホーム-><ユーザー名>->音楽->AC-> DC-> somealbum

4

2 に答える 2

7

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

于 2011-07-08T23:18:21.613 に答える
1

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

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

于 2011-07-08T23:18:51.213 に答える