Ошибка Perl Chdir

Я пытаюсь изменить рабочий каталог (для настройки администратора очередей WebShpere MQ), используя Perl в UNIX.

Я должен идти в каталог /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 он работает нормально, и он приходит к выводу, что это будет ошибка при использовании "\!" часть.

3 ответа

Решение

Вам не нужно убегать ! в имени каталога. Это должно работать:

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

Строки в одинарных кавычках не интерполируют обратную косую черту, поэтому вы пытаетесь перейти в каталог с именем /var/mqm/qmgrs/Q\!MAN

Либо пропустите обратную косую черту, либо используйте строку в двойных кавычках.

У вас есть обратная косая черта в вашей переменной... Я бы сказал, что вы делаете многое для побега.

Другие вопросы по тегам