Estoy escribiendo un script en Perl que genera un script de Bash. Estoy usando open() con un modo de > a la salida de todo a un nuevo archivo. Estándar material:

open (FILEOUT, ">", "rename.sh") or die "Can't create rename.sh";

La resultante de la .sh archivo es de sólo lectura, con un valor octal de 444. En perldoc dice que puedo añadir un + a la > (open (FILEOUT, "+>", "rename.sh")) para hacer que el recién creado archivo de lectura y escritura, o 666.

Hay una manera de hacer que el nuevo archivo ejecutable (755 o cualquier otra cosa) utilizando open()? Si no, ¿cuál es la mejor manera de establecer permisos de archivo para el nuevo archivo?

Eso no es realmente lo +>. No tiene nada con el archivo de permisos y en su lugar se afecta el modo de acceso de los filehandle creado por open.

OriginalEl autor Andrew | 2010-02-22

2 Comentarios

  1. 17

    Usted querrá chmod el archivo como este.

    chmod 0755, $filename;
    #or
    chmod 0755, $fh;

    Alternativamente, si usted utiliza sysopen y establecer el umask adecuadamente, se puede hacer sin chmod.

    Excelente. Ambas opciones funcionan de maravilla. Tengo sysopen para trabajar como: use Fcntl; sysopen (FILEOUT, "rename.sh", O_RDWR|O_EXCL|O_CREAT, 0755);
    Y no olvides el líder 0; chmod 755, $filename es equivalente a chmod 01363 $filename
    Que sólo funciona si el umask es un subconjunto de 022.
    Timmermans, no es necesario utilizar sysopen. Podría fácilmente haberse utilizado open.
    La forma correcta sería el uso de 0777 como los permisos. A continuación, es el usuario el que umask para elegir entre 0755 y 0775. (o algo diferente, con una inusual umask.) open y sysopen tiene un modo predeterminado de 0666.

    OriginalEl autor Leon Timmermans

  2. 1

    Poner + enfrente de < o > permite abrir el archivo en modo lectura y escritura.

    En tu caso puedes chmod el archivo recién creado.

    OriginalEl autor codaddict

Dejar respuesta

Please enter your comment!
Please enter your name here