Там также написано
It returns true upon success, false otherwise.
означает, что ваш звонок на chdir
не удался. Проверьте переменную $!
, чтобы понять, что произошло. Поскольку вы не получили фатальную ошибку времени выполнения, вам не нужно беспокоиться о последнем абзаце о fchdir
.
Выполняя пару тестов, я вижу, chdir FILEHANDLE
работает, когда FILEHANDLE
относится к каталогу, но не к обычному файлу. Надеюсь, это поможет:
open(FH, "<", "/tmp/file"); # assume this file exists
chdir FH and print "Success 1\n" or warn "Fail 1: $!\n";
open(FH, "<", "/tmp");
chdir FH and print "Success 2\n" or warn "Fail 2: $!\n";
opendir(FH, "/tmp");
chdir FH and print "Success 3\n" or warn "Fail 3: $!\n";
Fail 1: Not a directory
Success 2
Success 3