Bonjour à tous,
Je crée des fichiers sur un serveur linux, en utilisant le module FileHandle, comment définir les droits (rwxrwxr-x) à la création du fichier ?
D'avance merci.
Bonjour à tous,
Je crée des fichiers sur un serveur linux, en utilisant le module FileHandle, comment définir les droits (rwxrwxr-x) à la création du fichier ?
D'avance merci.
Je dirais que tu positionnes le umask avant d'appeler FileHandle->new :
Ou bien en changeant le mode après l'appel à FileHandle->new :
Code : Sélectionner tout - Visualiser dans une fenêtre à part umask 0777 ^ 0775;
ou carrément après avoir fermé le fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $fh = FileHandle->new("< fichier"); chmod 0775, $fh;
Tu as un besoin particulier pour utiliser FileHandle pour créer tes fichiers (au lieu du simple open) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $fh = FileHandle->new(); ... $FileHandle->open("fichier", "w"); $FileHandle->close(); chmod 0775, "fichier");
Merci pour ta réponse :
Non, est-ce mieux avec un simple open ? Pour créer un fichier inexistant, depuis que j'ai commencé à coder, j'ai toujours utilisé FileHandle, un simple open ne fonctionnait pas, mais ça a peut-être changé ... ou alors, je me trompe ?Tu as un besoin particulier pour utiliser FileHandle pour créer tes fichiers (au lieu du simple open) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 umask 0777 ^ 0775; my $fh = FileHandle->new('>'.$root.$rep.'/merge.txt');Useless use of bitwise xor (^) in void context at diXa_merge_files_v5.pl line 277.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 # fichier de sortie my $fh = FileHandle->new('>'.$root.$rep.'/merge.txt'); # droits sur le fichier rwxrwxr-x chmod 0775, $fh;Use of uninitialized value $fh in chmod at diXa_merge_files_v5.pl line 278.
PS : Je code sur un PC avec windows
Bah... je ne vois pas bien l'intérêt du module ... surtout si ton script n'est pas multi-plateforme. Mais je me trompe peut-être.
Pour la première erreur, c'est peut-être du à la précédence des opérateurs. Essaye :
ou plus simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part umask (0777 ^ 0775);
(la première écriture est plus "explicite").
Code : Sélectionner tout - Visualiser dans une fenêtre à part umask 0002;
Pour l'erreur du chmod, il y a de fortes chance que $fh retourné par FileHandle->new soit undef, donc que cette méthode ait échouée.
Merci beaucoup, cela fonctionne.
Partager