Я думаю, что это работает точно так, как написано, за исключением того, что у вас есть опечатка, а именно отсутствует закрывающая скобка вокруг chdir
.
unless(chdir($ARGV[0])) { #fixed typo
mkdir($ARGV[0], 0700);
chdir($ARGV[0]) or die "can't chdir $ARGV[0]\n";
}
Сценарий работает так:
- Если скрипт не может перевести chdir в $ ARGV [0]
то:
- Создайте каталог $ ARGV [0], с
маска разрешения 0700.
- Изменить рабочий каталог на
$ ARGV [0] или выйдите из сценария с
текст ошибки "cant chdir ..".
Начальным каталогом для скрипта будет каталог, из которого он вызывается, каким бы он ни был. На * nix это будет переменная $ENV{PWD}
внутри вашего скрипта. Он создаст новую папку в любой папке, для которой у него есть разрешение.
Я думаю, что это поведение логично, и так и должно быть. Если вы хотите, чтобы ваш пример работал, сделайте следующее:
.../Scripts> perl ./ScriptContainFolder/FolderCreator.pl ScriptContainFolder/New
Вы также можете использовать абсолютный путь, например
?> FolderCreator.pl /home/m/me/Scripts/ScriptContainFolder/New
ETA: О, и вы, конечно, всегда должны всегда включать это в свои сценарии, независимо от того, насколько они малы:
use strict;
use warnings;