perl supression derniere ligne fichier

perl supression derniere ligne fichier - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 28-01-2012 à 08:54:06    

Je souhaite decouper chaque ligne d'un fichier $ARGV[0] à une taille donnée $ARGV[1]  
 
Cependant, il y a tjs une derniere ligne affichee alors qu'il ne faudrait pas
 
NEED HELP !!!!
 
#Nom du fichier passe en parametre 1
$fichier = $ARGV[0];
 
#Nom du fichier en sortie temporaire .tmp
$fichier_temporaire = $fichier.".tmp";
 
#Taille des enregistrements
$taille = $ARGV[1];
 
#Complement des enregistrements avec des blancs
$complement = " "x$taille;
 
#ouvre le fichier a traiter en entree
open(fichier,$fichier)   or die "Can't open $fichier: $!";
 
#Ouvre en creation du fichier de sortie
open(fichier_maj,">$fichier_temporaire" )   or die "Can't open fichier sortie $fichier_temporaire : $!";
 
#Variable Compteur de Lignes
$ligne=0;
 
#Boucle sur toutes les lignes du Fichier
while (<fichier> )
{
 $ligne++;
#Supprime les fins de chaine
 chomp($_);
#Prend tous les enregistrements
 $record = substr($_.$complement, 0, $taille);
 printf fichier_maj $record."\n";  
}
print "$d" $ARGV[0];  
 
 
#Ferme les 2 fichiers
close (fichier_maj);
close (fichier);
 
#Supprime le fichier entree
unlink ($fichier);
 
#Renome le fichier en sortie vers le fichier en entree
rename $fichier_temporaire, $fichier;
 
#Affichage de fin de process
print "RecSize de <$ARGV[0]> a $taille\n";

Reply

Marsh Posté le 28-01-2012 à 08:54:06   

Reply

Marsh Posté le 01-02-2012 à 20:52:47    

Salut,
 
 - utilise STP les balises code pour le code
 - place systematiquement en tete de script "use warnings; use strict;"
 - revoit les handles de fichiers
 
Voici un script simple et testé :  

Code :
  1. #!/usr/bin/env perl
  2. # vim:ts=4:sw=4
  3. use strict;
  4. use warnings;
  5. my $file = $ARGV[0];
  6. open my $hand, '<', $file or die "$0: $file: $!\n";
  7. my @array = <$hand>;
  8. for (my $i=0; $i<$ARGV[1]; $i++) {
  9.     print $array[$i];
  10. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed