Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    95

    subroutine in variabile

    Vorrei che il programma redirezionasse l'esecuzione a subroutines diverse a seconda del valore passato dal form alla var locale $i (es.5) che forma a sua volta la var $scelta (contiene il nome delle sub: es. select_db5).
    NB $i è un valore proveniente da form con valore variabile tra 0 e 9;


    $i = $FORM{"valore"};

    $scelta=”select_db”.$i;

    &.$scelta; <- riga che non funziona: cosa sbaglio nella grammatica?




    sub select_db0 {
    ....istruzioni varie }

    sub select_db1 {
    ....istruzioni varie }

    sub select_db2 {
    ....istruzioni varie }

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    95
    In pratica vorrei bypassare le scelte condizionali, ossia non vorrei crearmi:

    if ($i =0) {&select_db0}
    else if ($i =1) {&select_db1}
    else if ($i =2) {&select_db2}
    else if ($i =3) {&select_db3}
    .....


    Non esiste un'istruzione select case?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Intendi uno switch?
    codice:
    switch($i) {
      case 0: 
        &select_db0;
        break;
      case 1: 
        &select_db1;
        break;
      case 2: 
        &select_db2;
        break;
      ....
      default:
        ....
    }
    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Ciao,

    gli switch in perl non esistono, vengono sostituiti da una serie di if... elsif... else

    Quello che vuoi fare è creare un reference simbolico, cosa possibile ma altamente sconsigliata, per cui se non sei costretto usa gli if.

    Ad ogni modo la sintassi esatta è:

    &$scelta;
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    95
    Proprio quello.

    Grazie Mich

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    95
    Mi sembrava strano ci fosse SWITCH in perl!

    Beh comunque grazie ad entrambi

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    95
    Shishii, perché &$scelta è una cosa altamente sconsigliabile???
    A me pare funzioni correttamente!!

    Dimmi: è meglio rimpiazzare con gli if, ma non aumenterebbe il tempo di esecuzione e discriminazione??
    sarebbero 9 if annidati!! troppi secondo me!

  8. #8
    Ciao,

    i reference simbolici sono uno strumento residuale, da usare solo quando non è possibile altro, per i seguenti motivi:

    - sicurezza: in pratica affidi la costruzione della variabile all'utente.

    - debug: diviene molto difficoltoso in quanto il nome della variabile non esiste in maniera stabile nella tabella dei simboli.

    - prestazioni: l'interprete effettua queste operazioni in maniera più lenta del normale.

    Tanto è vero che se tu usassi il pragma
    use strict;

    obbligatorio per chi fa buona programmazione il tuo programma genererebbe un errore irreversibile.

    Gli if non sono per nulla annidati ma tutti sullo stesso piano e perl non ha problemi a gestire la miseria di 9 alternative.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    95
    Indiscutibilmente preciso.

    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.