PDA

Visualizza la versione completa : [perl] eliminare underscore finali del valore di un parametro


basileus
18-01-2011, 09:31
mi servirebbe una subroutine che passatogli il parametro mi cancella gli underscore finali

es:

RMNRTIRTU1_______________ => RMNRTIRTU1

MEM_VTIRT2_______________________ => MEM_VTIRT2

naturalmente deve essere parametrico, gli underscore non sono fissi!!!


sto cercando di buttare giù qualcosa, ma per il momento non ottengo risultato!!!

ho provato così



my $var='MEMV_IRTU1________________';
$var=&eliminaUnderscore($var);
print "$var";

sub eliminaUnderscore {
my $temp= shift;
$temp=~ s/\__//g;
$temp=~ s/\_//i;
return $temp;
}

ma non va bene, perchè mi cancella il primo underscore oltre agli ultimi, lasciandone uno!!

Mich_
18-01-2011, 10:22
Non ti serve una routine, ti basta una RE:

my $str = "RMNRTIRTU1_______________"
$str ~= s/_+//;

(spero di non aver fatto errori di sintassi: sono andato a memoria e sono un po' arrugginito)

basileus
18-01-2011, 10:47
Originariamente inviato da Mich_
Non ti serve una routine, ti basta una RE:

my $str = "RMNRTIRTU1_______________"
$str ~= s/_+//;

(spero di non aver fatto errori di sintassi: sono andato a memoria e sono un po' arrugginito)

grazie

la tua soluzione è quasi giusta; oltre ad invertire i 2 caratteri = e ~, bisogna aggiungere un underscore in più, altrimenti mi cancella anche quello in mezzo


my $str = "RMNRTIRTU1_______________"
$str =~ s/__+//;

Mich_
18-01-2011, 11:14
Avevo il dubbio sul ~= / =~ : me lo dimentico sempre.

Non avevo capito che ce n'erano altri.
Allora e` meglio usare:
$str =~ s/_+$//;
altrimenti ti rimane un underscore se alla fine sono dispari.

basileus
20-01-2011, 14:50
grazie della risposta

cmq provando anche l'altro metodo e facendo delle prove, funzionava ugualmente, cmq l'ultima soluzione è meglio

curiosità: è possibile simulare all'interno di Perl un ambiente SQL??

mi spiego: invece di connettermi al database mysql, vorrei simularlo all'interno di Perl

esiste qualche libreria adatta??

grazie per l'eventuali risposte

Mich_
20-01-2011, 15:04
"simulare" non e` un termine che userei ... Soprattutto in un ambiente interpretato.

Posso rispondere che Perl ha i moduli per connettersi direttamente a molti database. Io da Perl ho usato un DB CSV, ma sono sicuro che esiste anche per MySQL.
Sul sito di Shishii (il moderatore di questo forum) trovi gli indirizzi per scaricare i moduli e le istruzioni relative (e tanto altro).

basileus
21-01-2011, 08:56
Originariamente inviato da Mich_
"simulare" non e` un termine che userei ... Soprattutto in un ambiente interpretato.

Posso rispondere che Perl ha i moduli per connettersi direttamente a molti database. Io da Perl ho usato un DB CSV, ma sono sicuro che esiste anche per MySQL.
Sul sito di Shishii (il moderatore di questo forum) trovi gli indirizzi per scaricare i moduli e le istruzioni relative (e tanto altro).

io già mi connetto ad un DB mysql installato su windows
volevo sapere se c'era la possibilità di emulrlo all'interno, emulare un server come avviene per esempio in java

stavo vedendo alcuni moduli come Mysql::SandBox, però non so

Loading