Perl, un truc tout bidon
Fermé
tout_fou
Messages postés
95
Date d'inscription
samedi 20 mars 2004
Statut
Membre
Dernière intervention
10 mai 2009
-
21 mai 2007 à 17:45
tout_fou Messages postés 95 Date d'inscription samedi 20 mars 2004 Statut Membre Dernière intervention 10 mai 2009 - 22 mai 2007 à 15:37
tout_fou Messages postés 95 Date d'inscription samedi 20 mars 2004 Statut Membre Dernière intervention 10 mai 2009 - 22 mai 2007 à 15:37
A voir également:
- Perl, un truc tout bidon
- Wap truc - Télécharger - Navigateurs
- Denon perl pro test - Accueil - Audio
- Adresse mail bidon - Guide
- Active perl - Télécharger - Édition & Programmation
- Mon telephone fait des trucs tout seul - Forum Téléphones & tablettes Android
5 réponses
oliver91
Messages postés
51
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
9 septembre 2009
3
21 mai 2007 à 18:05
21 mai 2007 à 18:05
La syntaxe pour ouvrir un fichier est la suivante :
open(FILEHANDLER,"nom_de_la_ressource");
Ce qui donnera par exemple : open(FILE,">toto.txt");
Lorsque le nom du fichier n'est précédé d'aucun signe particulier il s'agit d'une ouverture en lecture seule.
Lorsque le nom du fichier est précédé du signe supérieur > il s'agit d'une création de fichier.
Lorsque le nom du fichier est précédé du double signe supérieur >> il s'agit d'une ouverture en écriture.
La fonction open() retourne une valeur indiquant la réussite (true) ou l'échec (false) de l'ouverture du fichier.
La fonction close() admet comme unique argument le descripteur de fichier :
close(FILEHANDLER);
open(FILEHANDLER,"nom_de_la_ressource");
Ce qui donnera par exemple : open(FILE,">toto.txt");
Lorsque le nom du fichier n'est précédé d'aucun signe particulier il s'agit d'une ouverture en lecture seule.
Lorsque le nom du fichier est précédé du signe supérieur > il s'agit d'une création de fichier.
Lorsque le nom du fichier est précédé du double signe supérieur >> il s'agit d'une ouverture en écriture.
La fonction open() retourne une valeur indiquant la réussite (true) ou l'échec (false) de l'ouverture du fichier.
La fonction close() admet comme unique argument le descripteur de fichier :
close(FILEHANDLER);
tout_fou
Messages postés
95
Date d'inscription
samedi 20 mars 2004
Statut
Membre
Dernière intervention
10 mai 2009
1
21 mai 2007 à 19:12
21 mai 2007 à 19:12
Merci olivier,
Comment fait on pour inserer un mot en debut de fichier (tout en gardant le reste du texte) ?
Merci encore
Seb
Comment fait on pour inserer un mot en debut de fichier (tout en gardant le reste du texte) ?
Merci encore
Seb
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
21 mai 2007 à 20:37
21 mai 2007 à 20:37
Salut,
voilà quelques possibilités
voilà quelques possibilités
$ cat fichier.txt ligne1 ligne2 $ perl -pi -e 's/^/barbar1\n/ if $.==1' fichier.txt $ cat fichier.txt barbar1 ligne1 ligne2 $ perl -pi -e 's/^/barbar11\n/ if 1..1' fichier.txt lami20j@debian:~/trash$ cat fichier.txt barbar11 barbar1 ligne1 ligne2 $ perl -pi -e 'next unless $.==1;s/^/barbar111\n/' fichier.txt $ cat fichier.txt barbar111 barbar11 barbar1 ligne1 ligne2
tout_fou
Messages postés
95
Date d'inscription
samedi 20 mars 2004
Statut
Membre
Dernière intervention
10 mai 2009
1
22 mai 2007 à 13:19
22 mai 2007 à 13:19
Salut l'amis,
merci de ton aide, mais j'ai oublié de preciser que je voulais créer un fichier executable (babar.pl).
open(TOTO,>"doc.txt") ;
ecrire "babar" en debut de fichier
...
close(TOTO);
merci de ton aide, mais j'ai oublié de preciser que je voulais créer un fichier executable (babar.pl).
open(TOTO,>"doc.txt") ;
ecrire "babar" en debut de fichier
...
close(TOTO);
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 mai 2007 à 14:40
22 mai 2007 à 14:40
Salut,
d'accord
Dans ton exemple tu utilises le mode d'ouverture ">" qui correspond à "w" qui veut dire écrire
Quoi que tu fasses dans ton script le contenu de fichier sera écraser, donc ce n'est pas bon.
Il y a plusieurs possibilités
1. tu ouvres en mode ajout (append) ">>"
tu renverse le fichier
tu écrit la ligne
et tu renverse à nouveau le fichier
Pour des grands fichiers ce n'est pas outils
2. tu écris ta ligne dans un fichier temporaire
tu ajoute le contenu du fichier
tu écrase le contenu de fichier existant en le remplacant avec le contenu de fichier temporaire
tu supprime le fichier temporaire
3. tu utilise au début de script
#!/usr/bin/perl -pi.orig
et tu utilises une de mes commandes, bien sûr adapter à la situation
Je n'ai pas énumeré toute les possibilités, je suis au boulot et je n'ai pas le temps.
En revanche ce soir je vais te donner quelques exemples.
je viens juste de me mettre au PERL.
Alors ne soit pas si impatient :-)) quoi que pour un Perlien c'est une vertue :-)
d'accord
Dans ton exemple tu utilises le mode d'ouverture ">" qui correspond à "w" qui veut dire écrire
Quoi que tu fasses dans ton script le contenu de fichier sera écraser, donc ce n'est pas bon.
Il y a plusieurs possibilités
1. tu ouvres en mode ajout (append) ">>"
tu renverse le fichier
tu écrit la ligne
et tu renverse à nouveau le fichier
Pour des grands fichiers ce n'est pas outils
2. tu écris ta ligne dans un fichier temporaire
tu ajoute le contenu du fichier
tu écrase le contenu de fichier existant en le remplacant avec le contenu de fichier temporaire
tu supprime le fichier temporaire
3. tu utilise au début de script
#!/usr/bin/perl -pi.orig
et tu utilises une de mes commandes, bien sûr adapter à la situation
Je n'ai pas énumeré toute les possibilités, je suis au boulot et je n'ai pas le temps.
En revanche ce soir je vais te donner quelques exemples.
je viens juste de me mettre au PERL.
Alors ne soit pas si impatient :-)) quoi que pour un Perlien c'est une vertue :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tout_fou
Messages postés
95
Date d'inscription
samedi 20 mars 2004
Statut
Membre
Dernière intervention
10 mai 2009
1
22 mai 2007 à 15:37
22 mai 2007 à 15:37
Salut,
en effet j'ai utiliser la methode avec un fichier temporaire et sa fonctionne niquel.
Je ne suis pas impatient, mais j'ai chercher sur internet sans jamais trouver une fonction qui permet d'ecrire en haut d'un fichier.
J'ai d'ailleurs appris que ca ne pouvait pas se faire, et ce dans la pluspart des languages... ( pas directement en tout cas ).
Maintenant, j'attaque l'autre parti de mon programme qui est de lister un répertoire et de recuperer le nom de tous les fichiers de ce dernier.
Est ce que ce bout de code n'est pas censer m'afficher la liste de tous les fichier du repertoire d:\perl:\bin ?
$chemin="D:\Perl\bin";
opendir(REP,$chemin);
@fichiers=readdir(REP);
closedir(REP);
foreach $fichier (@fichiers)
{
print "$fichier";
}
Merci de ton aide, je continu a chercher pourquoi cela ne focntionne pas.*
Seb
en effet j'ai utiliser la methode avec un fichier temporaire et sa fonctionne niquel.
Je ne suis pas impatient, mais j'ai chercher sur internet sans jamais trouver une fonction qui permet d'ecrire en haut d'un fichier.
J'ai d'ailleurs appris que ca ne pouvait pas se faire, et ce dans la pluspart des languages... ( pas directement en tout cas ).
Maintenant, j'attaque l'autre parti de mon programme qui est de lister un répertoire et de recuperer le nom de tous les fichiers de ce dernier.
Est ce que ce bout de code n'est pas censer m'afficher la liste de tous les fichier du repertoire d:\perl:\bin ?
$chemin="D:\Perl\bin";
opendir(REP,$chemin);
@fichiers=readdir(REP);
closedir(REP);
foreach $fichier (@fichiers)
{
print "$fichier";
}
Merci de ton aide, je continu a chercher pourquoi cela ne focntionne pas.*
Seb