使用目录名中的正斜杠创建目录树

时间:2011-07-08 23:14:36

标签: perl subdirectory creation

尝试创建一个目录树,其中一个目录名称中包含正斜杠(/)。请参阅 $ 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个文件夹):
/ - &gt; home - &gt; &lt;用户名&GT; - &GT;音乐 - &gt; AC / DC - &gt; somealbum

我得到的目录树(6个文件夹):
/ - &gt; home - &gt; &lt;用户名&GT; - &GT;音乐 - &gt; AC - &gt; DC - &gt; somealbum

2 个答案:

答案 0 :(得分:7)

斜杠字符是文件或目录名称的非法字符。您需要替换其他字符,例如短划线字符。

答案 1 :(得分:1)

这是不可能的,不是因为Perl,而是因为OS文件系统层禁止它。没有转义字符允许您在路径组件中嵌入/(或NUL)。

通常采用特定于应用程序的编码方式,例如将=n视为NUL=s视为/=e=。 (我不知道任何实际使用该特定编码的应用程序;它只是一个例子。)