[PERL] probleme sur les fichiers

Fermé
DB601 Messages postés 11 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 25 août 2010 - 25 août 2010 à 16:39
Bonjour,




bonjour, je suis débutante en perl

j'ai fais un programme de tel sorte qu'il n'affiche que les mots qui sont en commun entre le fichier "test.txt" et le tableau "@name" mais il ne fonctionne pas comme je veux!!
quad je le compile je n'ai que les mots communs de la première ligne et le début de la 2eme qui s'affichent!! j'ignore pourquoi
et si je modifie l'ordre des éléments de mon tableau ou de mon fichier c'est encore pire!!

et j'avais fait au départ une bouce de lecture avant le premier "foreach"
genre :
while <FILE> {.....}
et à ce moment là je n'ai rien, aucun résultat

comprends vraiment pas!! :((

quelqu'un pourrait me mettre sur le chemin??
je suis perdue!


 
#!/usr/bin/perl
 
use warnings;
use strict;

 my  @name= ('ftp', 'http', 'KK', 'gre', 'icmp', 'eigrp', 'ipinip', 'ipsec', 'ospf', 'bgp', 'cuseeme', 'dhcp',
          'dns', 'finger', 'gopher', 'secure-http', 'imap', 'secure-imap', 'irc', 'secure-irc', 'kerberos',
          'l2tp', 'ldap', 'secure-ldap', 'sqlserver', 'netbios', 'nfs', 'nntp', 'secure-nntp', 'notes',
          'ntp', 'pop3', 'secure-pop3', 'pptp', 'rip', 'rsvp', 'smtp', 'snmp', 'socks',
          'ssh', 'syslog', 'telnet', 'secure-telnet', 'secure-ftp', 'xwindows', 'printer', 'novadigm',
          'tftp', 'exchange', 'vdoliv', 'sqlnet', 'rcmd', 'netshow', 'sunrpc', 'streamwork', 'citrix',
          'fasttrack', 'gnutella', 'kazaa2', 'custom01', 'custom02', 'custom03', 'custom04',
          'custom05', 'custom06', 'custom07', 'custom08', 'custom09', 'custom10', 'rtsp', 'rtp',
          'mgcp', 'skinny', 'h323', 'sip', 'rtcp', 'edonkey', 'winmx', 'unknown');
 
open(FILE,"<test.txt") or die"open: $!";
my(@lines,$line,@words,$word,%total); 
@lines=<FILE>;
	my $i=0;
foreach $line (@lines) {
 
@words = split( /\W+/, $line );
   
   foreach $word (@words)
   {   
      $word =~ tr/A-Z/a-z/;
	  
      if((lc($name[$i]) eq $word)){
	  print "$name[$i] \n"; #le noms que je veux afficher
	  }
	$i++;
     }
 }
 
close(FILE);
 
 


et dans mon fichier "test.txt" il y a

 
ftp http egp gre icmp eigrp ipinip ipsec ospf bgp cuseeme dhcp
dns finger gopher secure-http imap secure-imap irc secure-irc kerberos
l2tp ldap netbios nfs nntp secure-nntp notes ntp pcanywhere pop3 
secure-pop3 pptp rip rsvp smtp


je vous remercie