PDA

Visualizza la versione completa : [PERL]dove ho sbagliato???


=tW=
18-05-2006, 19:10
ragazzi, vi posto un codice che non capisco perchŔ mi genera tremila errori...mi aiutate??? sto cercando di imparare, ma mi sa che ho bisogno di aiuto :cry:


my $cosa= $ARGV[0]; #gestisce l'output
my $lungPSW= $ARGV[1]; #gestisce la lunghezza della PSW
my $numDiPSW=$ARGV[2]; #gestisce il numero di PSW da creare

BEGIN { srand() if $] < 5.004 } #avvia srand se la versione del compilatore
#Ŕ inferiore alla 5.004

if($cosa eq 'file'){subfile($lungPSW,$numDiPSW);} #se si vuole scrivere su file
elsif($cosa eq 'schermo'){subschermo($lungPSW,$numDiPSW);}#se si vuole scrivere su schermo
else{die "Parametro errato: ".$a." al posto di file o schermo";}#errore

sub subfile(){ #sub che scrive su file
$len=$_[0]; #accetta il parametro della lunghezza
$times=$_[1]; #accetta il numero delle volte che deve generare le password
print "Inserisci il file: ";
chomp($path=<STDIN>); #aquisisce l'indirizzo del file
open PSW, ">", $path;
for($i=1;$i<=$times;$i++){
$p=genera($lung);
print PSW $p;}
close PSW;
}

sub subschermo(){ #sub per scrivere su schermo
$len=$_[0]; #accetta il parametro della lunghezza
$times=$_[1]; #accetta il numero delle volte che deve generare le password
for($i=1;$i<=$times;$i++){
$p=genera($len);
print "$p\n";}
}

sub genera(){
$lung= shift;
for($i=1;$i<=$lung;$i++){ #e ripete la generazione finchŔ non raggiunge
#le volte richieste
$n=rand 200;
if($n%3==0){ #se Ŕ multiplo di tre mettiamo una lettera
if($n<=100){ #mettiamo una lettera maiuscola
$k=int(rand(25));
$k+=65;
$m=chr($k);
}
else{ #mettiamo una lettera minuscola
$k=int(rand(25));
$k+=97;
$m=chr($k);
}
}
else{ #se non Ŕ multiplo di tre mettiamo un numero
$m=int(rand(10));
$m+=48;
}
$PSW=$PSW.$m; #aggiunge alla password l'ultimo carattere appena creato
}
$fin=substr($PSW,0,$lung); #estrae una sottostringa in modo da avere una psw
#della lung richiesta
}

Olimp-Force
27-05-2006, 23:27
Che tipo di errori ti da?


Cmq sembra la sezione per geni di cyberenigma di HJ.... :fighet:

=tW=
28-05-2006, 10:24
giÓ proprio da lý ho preso spunto :zizi: mi da duemila errori, per˛ ho trovato...forse se faccio l'eq tra le stringhe evito che il povero perl si arrabbi :D

Olimp-Force
28-05-2006, 15:17
Volevo provarlo a fare anche io, per adesso ho fatto i primi 2 e vanno che e un piacere...

Adesso provo a farlo anche io...

Questo e per esperti :fagiano:


#!/usr/bin/perl

print q{________________________________________________ __________________________
|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZ|

Calcolatore di numeri per Hacker Journal.
Inserire i valori e il programma vi calcolera i numeri dal giornale di
partenza e quello di arrivo.

By ..::Olimp-Force ::..(Yaro)
__________________________________________________ ________________________
|ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ZZZZZZZZZZZZZZZZZZZZZZZZ|
};

print "*Indicare da che numero di Hacker Journal si desidera partire: \n\n";
print " Numero: ";
$n[0] = <STDIN> - 1;
print "\n";

print "*Indicare fino a che numero di Hacker Journal si desidera arrivare: \n\n";
print " Numero: ";
$n[1] = <STDIN>;
print "\n";

$n[2] = $n[1] - $n[0];

while ($n[0] < $n[1]) {
$n[0]++;
print "HJ$n[0] \n";
};

if ($n[0] > $n[1]) {
print "\n";
print "ERRORE: il numero di Hacker Journal a cui si desidera \n";
print "arrivare e piu piccolo di quello di partenza. \n\n";

system ("pause");
}

else {
print "\n";
print "I numeri di Hacker Journal sono stati calcolati \n\n";
print "Abbiamo calcolato $n[2] numeri di Hacker Journal\n\n";
print "\nby ..:: Olimp-Force ::.. \n\n\n";

system ("pause");
}


#Copyright by ..:: Olimp-Force ::..(Yaro)

Loading