2011-01-07 2 views
0

В моем скрипте perl я создаю скрипт оболочки (что-то, чтобы выполнить обработку результатов длительного моделирования). Я хотел бы отметить этот файл как исполняемый файл.Внутри Perl, как я могу пометить сгенерированный файл как выполнимый?

$fileName = 'postProcess.tcsh'; 

Очевидно, что я мог бы сделать следующее:

system("chmod +x $fileName"); 

Но мне любопытно, если есть решение, которое позволяет избежать системного вызова. Другими словами, возможно ли быть в модуле файлов? Что скажете, монахи?

ответ

11

Вы можете использовать встроенную функцию chmod в Perl:

chmod 0755, $fileName; 
+0

Doh. Riiight. Спасибо @supbro! –

+0

Спасибо, я не знал, что существует либо –

+0

Правило большого пальца: если вы вызываете system() для выполнения операции с файлом, есть вероятность, что Perl имеет встроенную функцию, которую вы должны использовать вместо этого. (Имя функции Perl обычно совпадает с именем функции C, а не с именем инструмента командной строки (например, open()/utime() вместо «touch»), поэтому не сдавайтесь, если вы не найдете его правильно далеко.) –

4

Вы можете установить режим при первом создании файла.

use Fcntl; 
sysopen my $fh, $filename, O_WRONLY|O_CREAT|O_EXCL, 0777; 
# instead of 
#open my $fh, '>', $filename; 

0777 Режим будет & с текущим umask.

Смежные вопросы