Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    1,093

    PL - variabili vreate al volo

    Ciao,

    ho una funzione che devo copiare per 5 volte, siccome l0' unica cosa che poi alla fine cambia è il nome delle variabili, pensavo si potesse fare una cosa del genere:

    sub prova {
    my $a = shift;
    my $b = shift;

    $nome = bla bla bla..
    $cognome = bla bla ba..
    }

    Le altre funzioni presenterebbero una cosa del genere:

    $nome1 = uguale a sopra
    $cognome2 = uguale a sopra.

    pensavo si potesse fare qualcosa del genere:

    sub prova {
    $b = shift;
    my $nome1;
    $nome.$b = bla bla
    }

    Dove $b sarebbe il numeretto da anteporre alla variabile...

    Ma non funzeca!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Come dire che vorresti "montare" il nome delle variabili al volo. Non mi risulta che si possa.
    Quelle cose si fanno solo in un lingauggio interpretato puro (tipo javascript), ma Perl e` in qualche modo precompilato (o preinterpretato, come preferisci).

    Pero` esistono i vettori (array), gli hash, i vettori di hash, ed altre strutture che ti possono aiutare.
    codice:
    my @dati = ();
    my %interno = (nome, '', cognome, '');
    
    sub prova {
      my $a = shift;
      my $b = shift;
      $interno{'nome'} = bla bla;
      $interno{'cognome'} = bla1 bla1;
      push(@dati, %interno);
    }
    Oppure, se vuoi metterlo in un punto definito del vettore, al posto del push usi:
    $dati[$b] = %interno;

    Poi per ricuperare i dati:
    $qualcosa = $dati[$i]{'nome'};
    $qualcosaltro = $dati[$i]{'cognome'};

    Spero di non aver fatto errori.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    1,093
    Si mich ok. conosco....

    Il problema sta nel fatto che anche cosi facendo devo utilizzare comunque duplicati delle funzioni, mentre il mio scopo era cercare di evitare questa rindondanza..capisci?

    ho provato anche a costruire al volo un arrai, se il risultato lo inserisco dentro ad una variabile e la stampo, vedo la stringa perfettamente creata come dovrebbe essere ma fuori dalla variabile non vedo nulla...

    Immaginavo che il problema potesse essere quello che hai elencato, ma speravo ci potesse essere una soluzione...Purtroppo ogni funzione inizializza variabili smpre uguali come nome, selmplicemente aggiungendo un numero (1-2-3-4-5...), tutto qui, non credo ci siano altre soluzioni se quella porposta non è applicabile...

    Amen..grazie lo stesso..mi rassegno ad avere codice rindondante che ODIOOOOOOOOOOOOO


    bye

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    In Perl esiste anche la funzione eval, che forse ti puo` andare (molto simile al JS).
    Io non la ho mai usata (e` sicurametne preferibile modificare i nomi delle variabili); la ho cercata sul manuale or-ora.

    eval($nome.$b) = 'blabla';

    Prova a vedere se fa al caso tuo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    1,093
    la provo grazie mille...forse funzeca...spero...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    1,093
    mich e in js come posso fare a crearmi una variabile al volo?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Mi pare che hai gia` un thread aperto di la`, qui siamo offtopic.

    Comunque dipende dall'oggetto: puo` essere document.getElementById('costante'+var)
    oppure document.forms['costante'+var]
    oppure document.NOMEFORM.elements['costante'+var]
    ...

    ma se vuoi continuare, dobbiamo spostarci.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    è possibile in perl creare il nome delle variabili al volo, ma è pratica deprecata, pericolosa ed impedita dai pragma di sicurezza tipo use strict;, comuque...

    $nome = 'ciao';

    $$nome = 5;

    print "$ciao\n";

    ottieni:
    5
    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
    Jan 2003
    Messaggi
    1,093
    grazie mille

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.