C'è un errore concettuale, devi essere tu a dire allo script quali subroutine eseguire e quando.
mettiamo che hai il seguente codice:
codice:
use CGI;
my $query = new CGI;
sub tuo_codice {
#codice che hai postato
}
sub change_pass {
# codice cambio password
}
devi operare i seguenti interventi
codice:
use CGI;
my $query = new CGI;
if($query->param('change_pass')) {
&change_pass);
}
else {
&tuo_codice();
}
sub tuo_codice {
#codice che hai postato
}
sub change_pass {
# codice cambio password
# aggiungi codice html per la pagina di risposta
}
sub print_form {
....
# aggingi agli altri tag
print $query->hidden(-name => 'change_pass',
-value => '1' );
# non sono sicurissimo della sintassi per la
# creazione di tag hidden. Controlla
...
}
in questo modo la prima volta che la pagina sarà chiamata visualizzerà il form, la seconda - trovando il tag change_pass - effettuerà le operazioni che ti servono.