2011-10-24 44 views
1

我試圖在UNIX中使用Perl更改工作目錄(用於配置WebShpere MQ隊列管理器)。Perl chdir錯誤

我得去目錄/var/mqm/qmgrs/Q\!MAN和我用下面的代碼片段:

$QueueManagerPathName = 'Q\!MAN'; 
chdir('/var/mqm/qmgrs/'.$QueueManagerPathName) or die "Cannot change to dir : /var/mqm/qmgrs/".$QueueManagerPathName."\n"; 

不過,這並不改變目錄去世時給

Cannot change to dir : /var/mqm/qmgrs/Q\!MAN 

當我刪除變量$QueueManagerPathName它的工作正常,並得出結論說,這將是錯誤使用"\!"部分。

回答

2

您不需要在目錄名中轉義!。這應該工作:

my $dir = '/var/mqm/qmgrs/Q!MAN'; 
chdir $dir or die "Can't cd to $dir: $!\n"; 
+0

非常感謝。我用UNIX shell表示誤解了它。使用'$ QueueManagerPathName ='Q!MAN';'它工作正常。再次感謝您 – DarRay

+0

如果您將字符串傳遞給shell(例如,使用'system'或反引號),您需要這樣做,但'chdir'在Perl中是本地的。 –

+0

@Colin:'system(「ls!test/*」)''和'print \'ls!test/* \'也可以工作 –

0

你在你的變量中有一個反斜槓......我會說你正在做很多逃避。

2

單引號字符串不插反斜槓,所以你要改變一個名爲/ var/MQM/qmgrs/Q \!MAN

無論目錄省略反斜槓,或使用雙引號字符串。