chdir в Perl с использованием двух строк: chdir /home/$dir1/$dir2

У меня есть две строки: $dir1 и $dir2. Я хочу использовать chdir, как показано ниже:

chdir "/home/$dir1/$dir2";

когда я пытаюсь это сделать, он не меняет каталог. Я проверил текущий рабочий каталог так же, как и раньше

Есть какой-либо способ сделать это?


person techie    schedule 09.12.2019    source источник
comment
Что происходит, когда вы пытаетесь это сделать?   -  person stevieb    schedule 09.12.2019
comment
вы можете проверить текущий рабочий каталог, используя cwd из модуля Cwd   -  person zdim    schedule 09.12.2019
comment
Если вы действительно пробовали это, и это не сработало, держу пари, у вас есть новая строка в конце одной из ваших переменных.   -  person ysth    schedule 10.12.2019
comment
Пожалуйста, покажите нам больше вашего кода. Как вы проверяете успешность chdir?   -  person Dave Cross    schedule 10.12.2019
comment
Знаете ли вы, что процесс не может изменить каталог своего родительского процесса?   -  person Dave Cross    schedule 10.12.2019


Ответы (1)


Обычно я пишу это так:

use v5.10;
use File::Spec::Functions;

my $dir = catfile( '/home', $dir1, $dir2 );
die "Dir <$dir> isn't a directory or doesn't exist" unless -e -d $dir;
chdir $dir or die "Could not change to <$dir>: $!";

Всякий раз, когда вы что-то делаете с системой, проверяйте результаты, чтобы убедиться, что это произошло.

И, что любопытно, я не осознавал, что пример главы Пирсона в моей книге Effective Perl Programming называется тот, который охватывает операторы тестирования сложенных файлов.

person brian d foy    schedule 09.12.2019