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

  FORUM HardWare.fr
  Programmation
  Perl

  probleme dans mon script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme dans mon script

n°1469180
donny3
Posté le 02-11-2006 à 12:05:43  profilanswer
 

salut,
 
Voila j'ai un script qui me permet de creer un fichier et de l'alimenter a partir de varible que j'ai stocker dans un tableau.
Si le fichier que mon script doit creer existe deja je recupere les valeurs de se fichier et je recreer un fichier avec celle ci.
au lancement de mon script,
on demande à la personne de saisir la valeur de la variable et pour certaine valeur je souhaite qu'elle soit autovalider et donc que la personne de puisse pas la saisir.
Donc j'ai mis une condition pour ses variables mais le probleme est que cette condition ne fonctionne pas;
j'ai reussi a la faire fonctionner dans un premier temps en mettant une valeur vide dans le tableau pour la variable concerné ( " " );
mais si le fichier existe alors je recupere les variables et leur valeur à partir de se fichier et donc
la variable que je souhaite autovalider ne sera pas autovalider si elle ne contient pas de valeur dans le fichier;et elle sera demander a la saisi
 
voila mon code
 

Code :
  1. #!/usr/bin/perl -w
  2. ###############################################################################
  3. use strict;
  4. use warnings;
  5. use English;
  6. use Getopt::Long;
  7. use POSIX qw(strftime);
  8. ###############################################################################
  9. my $sansdemande;
  10. my $tablo;
  11. my @tab = (
  12. { "NAME" => "var1",
  13.    "VALUE" => "",
  14.       "DESC" => "test1"},
  15.      
  16.       {"NAME" => "var2",
  17.    "VALUE" => "",
  18.     "DESC" => "test2"},
  19.    
  20.       {"NAME" => "var3",
  21.    "VALUE" => "",
  22.       "DESC" => "test3"},
  23.      
  24.       {"NAME" => "var4",
  25.    "VALUE" => "",
  26.       "DESC" => "test4"},
  27.      
  28.          {"NAME" => "var5",
  29.    "VALUE" =>  " ",
  30.       "DESC" => "test5"},
  31.      
  32.        
  33.      
  34. );       
  35. my $result = GetOptions ("sansdemande"   => \$sansdemande,     
  36.                         "tablo"   => \$tablo,     
  37.             ); 
  38. sub fonc
  39. {
  40. my $validation;
  41. $validation="n";
  42. my $ancienne;
  43. my $new;
  44. my $validated="novalide";
  45. if (length($_[0])>0)
  46. {
  47.    $validation = "o";
  48.    $ancienne = $_[0];
  49. }
  50. if ($_[1] eq "var3" or $_[1] eq "var5" )
  51. {
  52. $validated = "v";
  53. }
  54.      
  55. if ($validation ne "o" )
  56. {
  57.     if($sansdemande)
  58.         {
  59.        
  60. print $_[1]." [".$_[0]."] : <auto validation>\n\n";
  61.         }
  62.       else
  63.         {
  64. do {
  65.  
  66.  
  67.     print $_[1]." [".$_[0]."] : ";
  68.  
  69.  
  70.  
  71.  
  72.     $_[0] = <stdin>;
  73.     print "\n";
  74.     chomp($_[0]);
  75.    
  76.    } while (! ($_[0]));
  77.         }
  78. }
  79. elsif ($validated eq "v" )
  80. {
  81.  
  82.       print $_[1]." [".$_[0]."] : <auto validation>\n\n";
  83. $validated = "novalide";
  84. }
  85. else
  86. {
  87.     if($sansdemande)
  88.       {
  89.      
  90.        
  91. print $_[1]." [".$_[0]."] : <auto validation>\n\n";
  92.       }
  93.       else
  94.       {
  95.            
  96.                
  97. print $_[1]." [".$_[0]."] : ";
  98.    $_[0] = <stdin>;
  99.  
  100.    $new = $_[0];
  101.    if ((length($new)-1) == 0)
  102. {
  103.  $_[0] = $ancienne;
  104. }
  105. print "\n";
  106. chomp($_[0]);
  107.     }
  108. }
  109. }
  110. ################################################################################
  111. my $madate= strftime('%Y%m%d%H%M%S', localtime);
  112. my $filename = 'fic.txt';
  113. my $filename2;
  114. my $bool = 'false';
  115. my $bool2 = 'false';
  116. my @values1 = ();
  117. my $com2;
  118. my $var;
  119. my $var2;
  120. my $var1;
  121. my $var3;
  122. if (-f $filename)
  123. {
  124. $bool = 'true';
  125. my $infile = $filename;
  126. open DATA, $infile or die $!;
  127. foreach my $intext ( <DATA> )
  128. {
  129.  
  130. if ($intext =~ m/^\s*#\w+/ and $intext !~ m/^\s*#-\s*/)
  131.     {
  132.    
  133.     $com2 = $com2."\n".$intext;
  134.    
  135.     chomp($com2);
  136.     }
  137. if ( $intext !~ m/^\s*#/ and $intext !~ m/^\s*$/ and $intext =~ m/=/ )
  138.     {
  139.     my ($name, $value) = split /\s*=\s*/, $intext;
  140.     chomp($name);
  141.     chomp($value);
  142.     $name =~ s/^\s*export\s+(\w+)/$1/;
  143.  
  144.     push (@values1,[$name,$value,$com2]);
  145.     $com2="";
  146.     }
  147.    
  148. }
  149. $filename2 = $filename.$madate;
  150. rename($filename,$filename2);
  151. }
  152. if($tablo)
  153. {
  154.         foreach $var (@tab)
  155.           {
  156.        &fonc($var->{'VALUE'},$var->{'NAME'},$var->{'DESC'});
  157.           }
  158. }
  159. else
  160. {
  161.     if ($bool eq "true" )
  162.     {
  163.     print "\nPRENDRE LES VALEURS DANS LE FICHIER PROFILE\n";
  164.     $bool2 = 'true';
  165.         for ($var2 = 0; $var2 < scalar @values1; ++$var2)
  166.             {
  167.             foreach $var (@tab)
  168.           {
  169.            if($var->{'NAME'} eq $values1[$var2][0])
  170.            {
  171.            &fonc($values1[$var2][1] , $values1[$var2][0] , $values1[$var2][2] );
  172.            }
  173.            }
  174.            
  175.            
  176.            
  177.             }
  178.     }
  179.  
  180.     else
  181.     {
  182.         foreach $var (@tab)
  183.             {
  184.          &fonc($var->{'VALUE'},$var->{'NAME'},$var->{'DESC'});
  185.             }
  186.     }
  187.    
  188. }
  189. open(FILE1, '>', $filename) || die("impossible d'ouvrir $filename en écriture" );
  190. my $max;
  191. if ( $bool2 eq 'true')
  192. {
  193.     for ($var3 = 0; $var3 < scalar @values1; ++$var3)
  194.     {
  195.     if($values1[$var3][0] eq "var2" )
  196.       {
  197.       $max = $values1[$var3][1];
  198.      
  199.       }
  200.      
  201.       print FILE1 "#";
  202.       print FILE1 "-"x78;
  203.          
  204.      print FILE1 $values1[$var3][2]."\n";
  205.                                    
  206.      print  $values1[$var3][2]."\n";
  207.       print FILE1 "#";
  208.       print FILE1 "-"x78;
  209.       print FILE1 "\n";
  210.       if($values1[$var3][0] eq "var3" )
  211.       {
  212.       $values1[$var3][1] = $max*969;
  213.    
  214.       }
  215.      
  216.       print FILE1 "export ".$values1[$var3][0]."=".$values1[$var3][1]."\n\n";
  217.     }
  218. }
  219. else
  220.     foreach $var1 (@tab)
  221.     {
  222. if($var1->{'NAME'} eq "var2" )
  223.       {
  224.       $max = $var1->{'VALUE'};
  225.      
  226.       }
  227.       print FILE1 "#";
  228.       print FILE1 "-"x78;
  229.       print FILE1 "\n";
  230.       print FILE1 "#".$var1->{'DESC'}."\n";
  231.       print FILE1 "#";
  232.       print FILE1 "-"x78;
  233.       print FILE1 "\n";
  234.       if($var1->{'NAME'} eq "var3" )
  235.       {
  236.       $var1->{'VALUE'} = $max*969;
  237.    
  238.       }
  239.       print FILE1 "export $var1->{'NAME'}=$var1->{'VALUE'}\n\n";
  240.     }
  241. }
  242. close(FILE1);
  243. #


 
voila la partie ou je fait le teste pour voir si j'autovalide ou pas
 

Code :
  1. if ($_[1] eq "var3" or $_[1] eq "var5" )
  2. {
  3. $validated = "v";
  4. }


 
quand je lance mon script à partir des valeur du tableau

Citation :


var1 [] : essa
 
var2 [] : 12
 
var3 [] :
 
var3 [] : s
 
var4 [] : ep
 
var5 [ ] : <auto validation>


voila le fichier qui est creer a partir des valeurs du tableau

Citation :


#------------------------------------------------------------------------------
#test1
#------------------------------------------------------------------------------
export var1=essa
 
#------------------------------------------------------------------------------
#test2
#------------------------------------------------------------------------------
export var2=12
 
#------------------------------------------------------------------------------
#test3
#------------------------------------------------------------------------------
export var3=11628
 
#------------------------------------------------------------------------------
#test4
#------------------------------------------------------------------------------
export var4=ep
 
#------------------------------------------------------------------------------
#test5
#------------------------------------------------------------------------------
export var5=  


 
et quand je relance mon script, qui va s'appuyer maintenant sur ce fichier que je viens de creer

Citation :


var1 [essa] :
 
var2 [12] :
 
var3 [11628] : <auto validation>
 
var4 [ep] :
 
var5 [] :
 
var5 [] :
 
var5 [] :
 
var5 [] :


 
il me demande à chaque fois la var5 alors qu'en theorie cette variable doit etre autovalider et jamais demander
 
?????????
 
merci

mood
Publicité
Posté le 02-11-2006 à 12:05:43  profilanswer
 


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

  probleme dans mon script

 

Sujets relatifs
[Résolu][XHTML/Javascript/W3C] Problème de XHTML dans un JavascriptProblème de compatibilité script AJAX/IE
probleme action script, préchargementprobleme script vbs
Problème UTF8 +scriptPetit problème avec un script qui test la date d'installation de windo
problème avec un scriptProblème avec le script prog SquirrelMail...
Problème d'un script d'up d'image en ayant changé d'hébergement[Problème] Javascript et script SH
Plus de sujets relatifs à : probleme dans mon script


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