probleme dans mon script

probleme dans mon script - Perl - Programmation

Marsh Posté le 02-11-2006 à 12:05:43    

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

Reply

Marsh Posté le 02-11-2006 à 12:05:43   

Reply

Sujets relatifs:

Leave a Replay

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