Langage perl

Bonjour,

bonjour je travaille sous Windows avec le langage perl , mon problème est de transformer un fichier à un format spécifique voila mon code:
#!/usr/bin/perl;
@ARGV ="C:\script\Etiq.txt";
$~="ETIQUETTE";
while ($ligne = <>) {
chop ($ligne);
($pre,$nom,$ville,$pays) = split(/ /,$l);
write;
}

format ETIQUETTE =
+----------------------------+
| @<<<<<<<<<<<<<<<<<<<<< |
$pre
| @<<<<<<<<<<<<<<<<<<<<< |
$nom
| @||||||||||||||||||||| |
$ville
| @>>>>>>>>>>>>>>>>>>>>> |
$pays
+----------------------------+
.

il m affiche cette erreur : le fichier Etiq .txt ne s'ouvre pas et je ne sais po pourquoi malgré que l emplacement du fichier est correcte. merci pour votre aide.

9 réponses

  1. Contributeur
    ello
    essayer @ARGV ="C:\\script\\Etiq.txt"; ou @ARGV ="C:/script/Etiq.txt";
    1. j ai mis le fichier ds C seuelment c:\ etiq.txt mais le probleme qu il m a donnée un autre probleme c est :
      Global symbol "$ligne" requires explicit package name at c:\script\format.pl lin
      e 6.
      Global symbol "$ligne" requires explicit package name at c:\script\format.pl lin
      e 7.
      Global symbol "$pre" requires explicit package name at c:\script\format.pl line
      8.
      Global symbol "$nom" requires explicit package name at c:\script\format.pl line
      8.
      Global symbol "$ville" requires explicit package name at c:\script\format.pl lin
      e 8.
      Global symbol "$pays" requires explicit package name at c:\script\format.pl line
      8.
      Global symbol "$l" requires explicit package name at c:\script\format.pl line 8.

      Global symbol "$pre" requires explicit package name at c:\script\format.pl line
      15.
      Global symbol "$nom" requires explicit package name at c:\script\format.pl line
      17.
      Global symbol "$ville" requires explicit package name at c:\script\format.pl lin
      e 19.
      Global symbol "$pays" requires explicit package name at c:\script\format.pl line
      21.
      Execution of c:\script\format.pl aborted due to compilation errors.
    2. j ai besoin de votre aide svp c' est qlq un peux me donner une solution que je dois faire??
    3. Contributeur
      ça ne serait pas
      while (ligne = <>) {
      sans le "$" ?
  2. Contributeur
    enlever le ; à la fin de la ligne : #!/usr/bin/perl;
    1. Contributeur
      $ ./p4
      +----------------------------+
      | Nom                    |
      | Prenom                 |
      |         Ville          |
      |                   Pays |
      +----------------------------+
      $ 
      $ cat Etiq.txt
      Nom Prenom Ville Pays
      $ 
      $ cat p4
      #!/usr/bin/perl
      @ARGV ="Etiq.txt";
      $~="ETIQUETTE";
      while ($ligne = <>) {
      chop ($ligne);
      ($pre,$nom,$ville,$pays) = split(/ /,$ligne);
      write;
      }
      
      format ETIQUETTE =
      +----------------------------+
      | @<<<<<<<<<<<<<<<<<<<<< |
      $pre
      | @<<<<<<<<<<<<<<<<<<<<< |
      $nom
      | @||||||||||||||||||||| |
      $ville
      | @>>>>>>>>>>>>>>>>>>>>> |
      $pays
      +----------------------------+ 
      .
      
      1. Contributeur
        as-tu corrigé cette ligne ?
        ($pre,$nom,$ville,$pays) = split(/ /,$ligne); 
        1. Contributeur
          non, dans le premier post, il y a : ($pre,$nom,$ville,$pays) = split(/ /,$l);
          1. oui oui j ai mis ($pre,$nom,$ville,$pays) = split(/ /,$ligne);
            mais ca marche po je ne sais po pourquoi