Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1286 connectés 

  FORUM HardWare.fr
  Programmation

  Perl : Comment lire une ligne precise inscrite dans un fichier ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Perl : Comment lire une ligne precise inscrite dans un fichier ...

n°55771
metallicab​lood
keep cool & be zen !
Posté le 28-08-2001 à 12:45:52  profilanswer
 

Je cherche à lire la ligne 10 d'un fichier.txt, quelqu'un pourrait il me dire comment faire ?

mood
Publicité
Posté le 28-08-2001 à 12:45:52  profilanswer
 

n°55772
Aricoh
gentil mais fo po pousser
Posté le 28-08-2001 à 13:14:50  profilanswer
 

arf, j'ai pas mes bibles Perl à portée mais j'ai déjà eu ce cas de figure
 
si par exemple, c'est la ligne 10 que tu veux toper :
 

my @lignes;
my $compteur = 0;
 
open (FILE, "monfichier.txt" ) or die;
while (<FILE> )
{
    do
    {
        push (@lignes, $_);
        ++$compteur;
    } while ($compteur != 10);
    last;
}
 
chomp ($lignes[9]);
print ($lignes[9]);

 
je suis pas sûr pour le last, il te faut juste un truc pour quitter le 1er while et ça devrait aller

n°55796
metallicab​lood
keep cool & be zen !
Posté le 28-08-2001 à 14:47:21  profilanswer
 

ben c'est pas encore au point... ce cretin de debugguer me sort :
 
Unrecognized character \xA0 at C:\MesDocuments\thegratos\ping.cgi line 83.
 
la portion de mon script dans les alentours de cette ligne :
 
my @lignes; #ligne 74
my $compteur = 0;
open(B,"/home/thegrato/www/ping.txt" )|| die ;
while (<B> )
{
   do # ligne 83
   {
       push (@lignes, $_);
       ++$compteur;
   } while ($compteur != 10);
   last;
}
chomp ($lignes[9]);
($last_number=$lignes[9])=(~/\/([^a-zA-Z\/]+)\s/);
close (B);
 
print $last_number;
  }
 
j'ai essaye de modifier tout ça mais rien à faire ça veut vraiment rien savoir... quelqu'un aurait il une petite idee ?
 
@+

n°55813
Aricoh
gentil mais fo po pousser
Posté le 28-08-2001 à 15:25:02  profilanswer
 

tu as essayé de charger toutes les lignes de ton fichier dans un tableau ?
 
C'est peut être mon last pour quitter le while qui fout sa mouise, je comprend pas trop
 
Sinon, comme je dis, si ton fichier n'est pas énorme en nbre de lignes, tu peux tjs le charger entièrement, c'est pas top top mais bon

n°55926
metallicab​lood
keep cool & be zen !
Posté le 28-08-2001 à 21:59:47  profilanswer
 

Bon alors voila mon script
 
$ping = "/bin/ping -c 2";
$url = "ping.cgi";
$title ="Ping de serveur";
 
if ($ENV{'CONTENT_LENGTH'} ne '') {
 
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
     @pairs = split(/&/, $buffer);
     foreach $pair (@pairs)
     {
         ($name, $value) = split(/=/, $pair);
         $value =~ tr/+/ /;
         $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
         $value =~ s/~!/ ~!/g;
         $FORM{$name} = $value;
     }
}
 
$FORM{'host'} =~ s/(\W)/\\$1/g;
 
print "Content-type:text/html\n\n";  
 
print "<HTML>\n <HEAD><TITLE>$title</TITLE></HEAD><BODY BGCOLOR=\"#FFFFFF\" LINK=\"#FFFFFF\" VLINK=\"#FFFFFF\" ALINK=\"#FFFFFF\"> ";
 
     
    if ($FORM{'host'} eq ''){
    print <<EOFHTML;
     
   <FORM METHOD="POST" ACTION="$url">
 
    <TABLE WIDTH="350"  CELLPADDING="0" CELLSPACING="0" BORDER="0">
       <TR ALIGN="CENTER"><TD BGCOLOR="#ffbc2a"> <BR><INPUT TYPE="TEXT" SIZE="18" MAXSIZE="40" NAME="host" VALUE="host.domain.com"><BR> </TD><TD BGCOLOR="#000000"> <BR><INPUT TYPE="SUBMIT" VALUE="CHECK"><BR> </TD></TR></TABLE>
 
EOFHTML
  }
    else
  {
    $txt = `$ping $FORM{'host'}`;
 
open (A,">/home/thegrato/www/ping.txt" ) || die "impossible d'ouvrir le fichier";
print A $txt;
close(A);
 
my @lignes;
my $compteur = 0;
open(B,"ping.txt" )|| die ;
while (<B> )
{
   do
   {
       push (@lignes, $_);
       ++$compteur;
   } while ($compteur != 10);
   last;
}
chomp ($lignes[7]);
($last_number=$lignes[7])=(~/\/([^a-zA-Z\/]+)\s/);
close (B);
 
print $last_number;
  }
 
  print "</BODY></HTML>";
 exit 0;
 
Apparemment le last ne pose pas vraiment probleme... j'ai essaye de retirer le do et/ou le last mais ça change rien au probleme...

n°56252
Aricoh
gentil mais fo po pousser
Posté le 30-08-2001 à 11:03:34  profilanswer
 

une question toute bête : pour lancer ton script, utilise-tu l'option -w ?
 
c'est tout con comme truc, tellement con qu'il y a plein de collègues qui ne l'utilisent jamais et bien souvent les messages d'erreur et/ou d'avertissement sont plus explicites que les messages standards


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Perl : Comment lire une ligne precise inscrite dans un fichier ...

 

Sujets relatifs
[vc++] imprimer un fichier texteune question en perl
[VB5] Lire et créer un raccourcis[VB] lire des donnees dans un autre fichier et les copier
[PHP] Problème d'accès à un fichier distant avec include()TOP URGENT : fermer automatiquement un fichier BATCH
Interet et paramètrage du fichier ROBOTS.TXTje cherche un fichier vxd
[XML & MFC] écrire et lire un fichier XML, quelles classes MFC ? 
Plus de sujets relatifs à : Perl : Comment lire une ligne precise inscrite dans un fichier ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR