2014-09-26 65 views
1

我正在使用用戶輸入變量作爲我的初始目錄名稱,但在嘗試展開目錄並創建子文件夾時,利用該變量會在路徑中引發問題。在perl中使用變量作爲目錄名稱

#!/usr/bin/perl 
use strict; 
use warnings; 

print "What would you like to name your directory?\n"; 
chomp(my $directory = <STDIN>); 

mkdir $directory, 0755; 
mkdir $directory/data, 0755; ##<----<<Error begins here## 
mkdir $directory/data/image, 0755; 
mkdir $directory/data/cache, 0755; 
+4

'使用診斷;'並重試。 – 2014-09-26 13:36:48

+0

這幫助了非常,真棒。 – 1up 2014-09-26 13:39:21

+0

「嚴格使用;'和'使用警告;'的榮譽。 Tiz很高興看到一位新用戶已經學到了最重要的一課。 – Miller 2014-09-26 20:44:21

回答

4

Perl中未加引號/表示分割或正則表達式匹配。引用它,如果它是一個字符串的一部分:

mkdir "$directory/data", 0755; 
3

或者嘗試

use File::Path qw/ make_path /; 

make_path("${directory}/data/image", "${directory}/data/cache"); 

它會創建中間目錄爲您服務。

您可能還想看看Path::TinyPath::Class模塊,它們具有更好的文件操作OO接口。