1

UNIX で Perl を使用して作業ディレクトリを変更しようとしています (WebShpere MQ キュー マネージャを構成するため)。

ディレクトリに移動する必要があり、/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を使用するとエラーになると結論付けられます"\!"

4

3 に答える 3

2

一重引用符で囲まれた文字列はバックスラッシュを補間しないため、/var/mqm/qmgrs/Q\!MAN というディレクトリに変更しようとしています。

バックスラッシュを省略するか、二重引用符で囲まれた文字列を使用してください。

于 2011-10-24T12:12:06.583 に答える
2

!ディレクトリ名をエスケープする必要はありません。これはうまくいくはずです:

my $dir = '/var/mqm/qmgrs/Q!MAN';
chdir $dir or die "Can't cd to $dir: $!\n";
于 2011-10-24T12:16:13.243 に答える
0

あなたの変数にバックスラッシュがあります...あなたは多くのエスケープを行っていると思います。

于 2011-10-24T12:10:58.947 に答える