IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Scripts utiles
        Compatibilité Unix/Microsoft des fichiers (^M \n Mac)

rechercher
precedent    sommaire       telecharger


Compatibilité Unix/Microsoft des fichiers (^M \n Mac)
auteur : Stoyak
  • Pour vous éviter quelques petits soucis!!
Vous travaillez sous MAC OS X, vous développez, je peux donc supposer que vous utilisez le Terminal, qui est un système Unix!
Voilà donc un des petits soucis que j'ai rencontré, et que je voudrai vous épargner.
Je parsais un fichier ".txt" généré à partir d'Excel Microsoft (pour ne pas le nommer) avec un script Perl. Seulement voilà, le système ne reconnaissait pas les lignes : le retour chariot était remplacé par un caractère ^M. Autant vous dire que mon petit script était alors totalement inefficace!! Et pourquoi? Parce que le codage de fin de ligne diffère selon le système utilisé! Les éditeurs de texte qui ne supportent pas les retours chariots affichent ce ^M superflu!
Voilà une petite méthode pour s'en débarrasser! Ajouter cette procédure à tous vos scripts, et vous n'aurez plus de problème d'incompatibilité de fichiers Unix/Windows!
  • Procédure en question!!
#!/usr/bin/perl -w
use strict;
use Carp;

# declaration des fichiers
# mon fichier à traiter
my $fichier_initial = "mon_fichier.txt";
# le fichier modifie que je cree
my $fichier_modifie = "fichier_modifie.txt";

# appel de la procedure: - en entree: mon fichier à traiter
#- en sortie: mon fichier modifie
&traite_fichier($fichier_initial, $fichier_modifie);


# procedure qui permet de rendre les fichiers compatibles unix/windows
sub traite_fichier {
  # passage des parametres $fichier <- $fichier_initial
  #$fichier_modif <- $fichier_modifie
  my ($fichier, $fichier_modif) = @_;

  # declaration du tableau @tab 
  my @tab;

  # lecture du fichier initial
  open (LECTURE, $fichier) || die ("pb d'ouverture du fichier $fichier $! "); 
  while (my $ligne = <LECTURE>){
    chomp ($ligne);
    # remplacement des retours chariots!
    $ligne =~ s/\r\n?/\n/g;
    push (@tab,$ligne);
  }
  close (LECTURE);

  # ecriture du fichier modifie
  open (ECRITURE, ">$fichier_modif") || die ("pb d'ecriture dans le fichier $fichier_modif $! ");
  foreach my $case (@tab){
    print ECRITURE "$case\n";
  }
  close (ECRITURE);
}

rechercher
precedent    sommaire       telecharger

Consultez les autres F.A.Q's

Valid XHTML 1.1!Valid CSS!


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.