mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.perl
Titolo: Accesso ai file [perl + linux]

Ciao a tutti, avrei un piccolo quesito da porvi.....
Ho uno script che apre alcuni file su disco... lo scrip gira come root e
quindi può aprire in lettura tutti i file su disco, io però vorrei che
venissero aperti solo i file degli utenti o cmq. non quelli del gruppo
root.... come posso fare?

 root.... come posso fare?
Usando stat() ti leggi l'id a cui appartiene il file e, se soddisfa i
tuoi criteri (se è diverso da zero, mi pare di capire), lo apri,
altrimenti no!
Qualcosa del tipo:
opendir(D, ".");
@dir = readdir(D);
for(@dir) {
    if((stat($_))[4] != '0') {
	    print "$_ non appartiene a root\n";
	}
}
Ciao
--ev

 ha scritto nel messaggio
news:vjdl5a...@192.168.1.100...


Newsgroup: it.comp.lang.perl
Titolo: Alcune istruzioni in perl

Ciao a tutti
Vorrei sapere cosa indica la seguente espressione in perl:
While(1){
...........
}
ed anche cosa indica il seguente operatore **
es. $d ** $k
Grazie

 Grazie
** è l'esponenziale quindi $d elevato alla $k
su 
www.perl.it
 c'è un pdf "Corso di Perl, guida introduttiva al
linguaggio" se può servire
ciao

 
ciao
gmax
-- 
 _  _ _  _
(_|| | |(_|><  The Data Charmer
 _|
http://datacharmer.org/

 > es. $d ** $kelevamento a potenza.


 Grazie di nuovo
Occhio al top-quoting (mai!).
 Raffaello

la riga last CLUSTER if .....
L'etichetta CLUSTER: identifica il ciclo for più esterno, last CLUSTER esce
dal ciclo CLUSTER. Un last, senza etichetta di riferimento, terminerebbe il
ciclo più interno; le etichette consentono di saltare un o più livelli,
altrimenti sarebbe necessario ripetere il test ad ogni livello (come
accade, per esempio, in C per l'istruzione break).
Consulta comunque perlsyn, che dovrebbe chiarirti meglio questa ed altre
questioni.
Ciao.
Newsgroup: it.comp.lang.perl
Titolo: Opendir e readdir

Ciao Ragazzi non è da molto che programmo in perl ma solo (da non
crederci... il trucco è stato leggere attentamente la BIBBIA: Programmare in
Perl di Larry Wall) oggi mi
sono trovato davanti ad un problema e quindi solo per curiosità ( ho già
trovato un workaround) volevo capire perchè il perl si comporta così.
Praticamente volevo mettere il contenuto di una directory in due array ed ho
fatto così:
opendir REDHAT73, "/opt/mirrors/7.3/i386";
@allfilesindir = grep !/^\.+/, grep s/.i386.rpm//, readdir REDHAT73;
@allfilesconestensione = grep !/^\.+/, readdir REDHAT73;
closedir REDHAT73;
stranamente però il secondo array è vuoto e quindi la domanda è:
Perchè non riempie anche il secondo array?
Ciao Alertino

 @allfilesconestensione = grep !/^\.+/, readdir REDHAT73;
Comunque non è una cosa tanto simpatica usare readdir in list context, se
per caso la dir potrebbe arrivare a contenere qualche migliaio di files ;-)
Quando puoi è meglio usarli uno alla volta, anche se sono pochi (il futuro
presenterà meno sorprese:-):
while (readdir REDHAT73)
{
    # fai qullo che vuoi con $_ che contiene il nome del file
}
ciao
--
perl -MLWP::Simple -e "getprint(' 
http://perl.4pro.net
 ')"

 
Non proprio. Forse volevi scrivere 'for', ma non credo, perché in tal caso
avremmo di nuovo un contesto di lista. Meglio così:
 my $d;
 while( $d = readdir REDHAT73 )
 {
     # fai qullo che vuoi con $d che contiene il nome del file
 }
MM

  }
già :-), ho mischiato differenti cicli con differenti contexts... l'età
comincia a manifestare i suoi effetti :-)
comunque allora mi piace di più così per comodità ;-)
   while( local $_ = readdir REDHAT73 )
   {
       # fai qullo che vuoi con $_ che contiene il nome del file
   }

Newsgroup: it.comp.lang.perl
Titolo: nonhocapito.db

Sto cercando di usare un file dbm per un piccolo
achivio, ma evidentemente non ho capito bene come
usare questi files.
#############################
Per inserire un record pensavo di scrivere:
  $dbfile = "rubrika";
  $chiave = "1234"; #è un num progressivo
  $record{'nome'} = "";
  $record{'email'} = "";
  $record{'tel'} = "";
  dbmopen(%MIODB,$dbfile,0666);
   $MIODB{$chiave} = %record;
  dbmclose(%MIODB);
#############################
#############################
Per leggere un campo:
  $dbfile = "rubrika";
  $chiave = "1234";
  dbmopen(%MIODB1,$dbfile,0666);
   %record1 = $MIODB1{$chiave};
  dbmclose(%MIODB1);
  print $record1{'email'};
#############################
Però perchè non funziona? :(
Thanks in advance.

 #############################

I DBM sono di fatto hash su file, in cui non puoi mettere altro che stringhe.
Tu invece ci vorresti mettere altri hash ed invece ci metti tante stringhe
del tipo "1/8" o roba del genere...
Se vuoi mettere record complessi in un DBM, devi concatenarteli 
da solo in una stringa
 
  $MIODB{$chiave} = join "##", $record{nome}, $record{email}, $record{tel};
 
e poi alla lettura fare
 ($record{nome}, $record{email}, $record{tel}) = split '##', $MIODB{$chiave};
 
Per cose piu' evolute, ci sono moduli tipo MLDBM.
Tra l'altro, dbmopen() e' praticamente obsoleto. Ora si usa 'tie'
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)
Newsgroup: it.comp.lang.perl
Titolo: opzioni script

Salve a tutti, vorrei sapere come e se è possibile mettere delle 
opzioni ad un proprio script perl a linea di comando.
Del tipo:
script.pl
 -o 
output.pl
 -i input.txt 
e via dicendo...
Ovviamente non posso usare ARGV o si?
E nel caso ci sia un modo, posso inserire le opzioni in maniera 
casuale? Cioè prima il -o e poi il -i e viceversa la volta dopo.
Grazie.
Inviato da 
www.mynewsgate.net

 e via dicendo...
I moduli Getopt::Std && Getopt::Long fanno per te...
Il primo è pù semplice e fa il parsing solo di caratteri singoli (mi 
sembra di ricordare) mentre il secondo fa anche il parsing di parametri 
lunghi (da qui il nome Long :)) e per scopi più complessi.
Ciao,
-- 
+--------+ | ASCII ribbon campaign ( ) | 
www.autistici.org/kral
|  kral  | |  - against HTML email  X  |
+--------+ |              & vCards / \ | my gpg id = 0x7C946947

 singoli (mi sembra di ricordare)
Si, esatto.
Parametri del tipo "-s 192.168.0.10", "-a 2004", ecc...

 lunghi (da qui il nome Long :)) e per scopi piů complessi.
Tra i due moduli preferisco il terzo, Getopt::Mixed, che come 
dice la parola supporta entrambe le possibilita`.
ciao,
S.
-- 
Stefano Rodighiero      |  
http://larsen.perlmonk.org
mailto:
lar...@perl.it
   |  
http://www.perl.it

 dice la parola supporta entrambe le possibilita`.
Si ma il problema è che non è di default mentre, data la semplicità del mio
script non volevo complicarlo con moduli aggiuntivi non di default.
Ma se uso entrambi quelli citati da kral non posso avere un mix?
Grazie,
nathanvi
Inviato da 
www.mynewsgate.net

 E' corretto? Le opzioni non sono viste anche come ARGV ma solo come tali?
Immagino che il codice riportato non sia completo, e che sopra
ci sia la parte che adopera uno dei moduli in Getopt::* per fare
il parsing delle opzioni. Non ho mai guardato il codice di tali
moduli, ma non sarei stupito se facessero una cosa simile a:
  $whatever = shift @ARGV;
Che e` una modifica distruttiva dell'array @ARGV.
Se vuoi adoperare Getopt::... _e_ avere @ARGV a disposizione, devi
fartene una copia prima.

Newsgroup: it.comp.lang.perl
Titolo: ! sapere lenght di una string

Salve,
ho una variabile scalare $text che contiene una stringa (es: "alex").
Come faccio a saperne la lunghezza ???
Grazie,
Alex

 Come faccio a saperne la lunghezza ???
 perldoc -tf length

Newsgroup: it.comp.lang.perl
Titolo: Aiuto!!! (trovare sub string di substring)

$testo="xx yyy U_123 cfe";
if(  $testo=~ s/U_/ ){
#se lo trovo, devo sostituire all'interno di $testo l'intera substring
"U_123"  con un altra contenente la sub string, tipo:   "<img= U_123  >"
 }
Spero di essermi spiegato!?
Ps. io non ci arriverei mai:-/
Grazie 1000

 
Semplicemente:
 $testo =~ s/(U_\d+)/<img= $1 >/ig;
	- Enrico

 Spero di essermi spiegato!?
Spero funzioni . Ciao Stefano


 ha scritto nel messaggio
news:20020924100241....@sorcinelli.it...


 Spero funzioni . Ciao Stefano
grazie Stefano ma non e' esatto, "U_123"  non e' fisso, e' la parola
completa contenente la substringa da cercare.
L'esempio di Enrico se funzionasse sarebbe giusto, ma non va!
Ciao
Oxy

com'era!?!?
??? A me pare che funzioni:
  #--- 
prova.pl
  $testo="xx yyy U_123 cfe";
  print "Prima: ", $testo, "\n";
  $testo =~ s/(U_\d+)/<img= $1 >/ig;
  print "Dopo:  ", $testo, "\n";
  #------
  >perl 
prova.pl
  Prima: xx yyy U_123 cfe
  Dopo:  xx yyy <img= U_123 > cfe
Ciao.

 
Mmhh... sei sicuro? Il codice è solamente (senza if):
---CUT HERE---
#!/usr/local/bin/perl
$testo="xx yyy U_123 cfe u_44";
$testo =~ s/(U_\d+)/<img= $1 >/ig; 
print $testo;
---CUT HERE---
che stampa ad esempio:
	xx yyy <img= U_123 > cfe <img= u_44 >
	- Enrico

 wrote in message
news:dlYj9.4171$e31....@twister2.libero.it...

Com'č che sul mio ActivePerl v5.6.0 funziona perfettamente?
Hai provato a copiare e incollare, e far girare SOLO questo che ti hanno giŕ
scritto:
#!/usr/local/bin/perl
$testo="xx yyy U_123 cfe u_44";
$testo =~ s/(U_\d+)/<img= $1 >/ig;
print $testo;
Non ci aggiungere o togliere niente altro, e vedrai che va. Se proprio
proprio non va ancora, allora sarebbe un caso davvero degno di discussione.
Per favore, riprova in un file nuovo nuovo e se ancora non va, posta qui
quello che ti viene fuori scrivendo questo in un DOS prompt:
perl -V
cosě controlliamo se abbiamo la stessa versione, e poi cominciamo a cercare
a fondo.
ciao
dd

 perl -V
Ho forse dato il via ad un'era di version checking? ;-)
-- 
Saluti,
Giancarlo

 Ho forse dato il via ad un'era di version checking? ;-)
:-)))) già, e siccome io sono sempre estremista, invece di usare
il --version suggerito da te preferisco il -V :-)))
ciao
dd

 a fondo.
Funziona!!!... Azz.. non capisco, di certo con il Dzsoft che uso non va'...
ma avevo provato diverse volte anche dal dos...  non capisco!?... Mah... sto
diventando vecchio! :-/
Grazie a tutti, scusatemi il disturbo in + del normale.
Ciao
Oxy
Newsgroup: it.comp.lang.perl
Titolo: Per calcolare la data della Pasqua?

Qualcuno e' cosi gentile da spiegarmi l'algorito per stabilire la data di
Pasqua?
vi prego rispondetemi e' urgente.. se vi e' possibile anche in email ;)
Tnx

Saluti.

Excite....excite....excite... aren't you excited yet?
Non è meravigliosa l'era dell' informazione? Basta cercare sul web.
Naturalmente *bisogna* cercare. 
Qualcuno ricorda Emily Postnews?
(
http://bertola.eu.org/usenet/faq/testi/emily.txt
)
Parafrasando:
D: Cara Emily, ho un problema da risolvere in maniera urgente.
   Devo inviare un messaggio?
R: Certamente. Il tuo messaggio infatti impieghera' dai 3 ai 5 giorni
per raggiungere gli utenti Usenet in giro per il mondo. E le loro
risposte
altrettanto tempo per raggiungere te. Il tuo problema urgente non può
certamente 
essere ritardato del tempo necessario a compiere una sommaria ricerca
sul web quando
migliali di lettori di Usenet hanno la risposta pronta in tasca.
E, se vuoi dare alla tua domanda un maggior senso di urgenza e ottenere
risultati
più rapidi, non dimenticare di richiedere risposta via E-mail
Ciò detto e obbedendo ad uno delle virtù caritatevoli apocrife (aiutare
gli ignavi):
Queste URLs vengono da 15 minuti di ricerca sul web:
Inglese
http://www.lilli.com/tvvtools.html#cal
http://www.smart.net/~mmontes/butcher.html
http://www.smart.net/~mmontes/carter.html
http://www.assa.org.au/edm.html
http://www.rog.nmm.ac.uk/leaflets/easter/easter.html
http://quasar.as.utexas.edu/BillInfo/ReligiousCalendars.html
Italiano
http://www.scuolaitalia.com/eureka/esperti/astro/epatta.html
http://www.scuolaitalia.com/eureka/esperti/astro/epatta_2.html
Dove troverai tutte le spiegazioni che ti servono.
Nonchè l'algoritmo di Butcher per il calcolo del termine Pasquale:
 
In the text below, / represents an integer division neglecting the
remainder, while % is division keeping only the remainder. So 30/7=4 ,
and 30%7=2 . 
        a=year%19
        b=year/100
        c=year%100
        d=b/4
        e=b%4
        f=(b+8)/25
        g=(b-f+1)/3
        h=(19*a+b-d-g+15)%30
        i=c/4
        k=c%4
        l=(32+2*e+2*i-h-k)%7
        m=(a+11*h+22*l)/451
        Easter Month =(h+l-7*m+114)/31  [3=March, 4=April]
        p=(h+l-7*m+114)%31
        Easter Date=p+1     (date in Easter Month)
Aggiungo che, frugando nei vari archivi di script in perl, deve ancora
essere possibile
trovare un one-liner per lo stesso calcolo.
Cheers,
	Alessandro

 Pasqua?
Se non mi sbaglio la Pasqua e' la prima domenica dopo l'equinozio di
primavera.
Aguri per i calcoli da fare :-)
-- 
Lorenzo Pulici - milanohockey at 
penguinpowered.com
http://come.to/milanohockey
   - I colori di Milano sono solo rossoblu
http://ellepiweb.cjb.net
      - 
http://verdebaggio.freeweb.org
   ** Le insegne luminose attirano gli allocchi (G. L Ferretti) **
Newsgroup: it.comp.lang.perl
Titolo: Monitorare il carco della cpu

Ciao, voglio monitorare il carico della cpu con un programmino in
perl. L'intento è quello di lanciare il programma ogni 10 minuti e
registrare il carico della cpu in un database per poi fare delle
statistiche. Qualcuno conosce moduli che abbiano simili funzioni o
funzioni di monitoraggio del traffico? Uso Nt perciò non posso usare
il comodissimo uptime di linux. Perfavore rispondete anche in e-mail
Grazie
Luca

che io sappia non c'č niente per NT,
solo Sys::CpuLoad che si appoggia su
/proc/loadavg e /usr/bin/uptime
ti ci vorrebbe un programma console x NT
sul genere uptime da cui poter leggere l' output
con una pipe
cerca in rete
-- 
Posted from qmailr@[195.223.140.135] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.perl
Titolo: Errore CGI

Ciao ,
ho creato una form con alcuni campi di testo da inserire.
Questa form mi chiama col metodo get un CGI che però
non riesco a visualizzare....
Il CGI in questione è il seguente  :
#!/usr/local/bin/perl -w
use CGI;
$query = new CGI;
                print "<html><head><title></title></head>";
                print "<body>";
                print "<h1>PROVA</h1>";
                print "</body>";
                print "</html>";
Mentre L'errore che vado a leggere nel file di error log del server è il
seguente:
[14/May/2002:15:05:32] failure (10623): for host 10.1.0.109 trying to GET
/cgi-bin/registrazione/form_anagrafica.cgi, cgieng_scan_
headers reports: the CGI program
/mimmo/netscape/new-atlavia/cgi-bin/registrazione/form_anagrafica.cgi did
not produce a valid hea
der (name without value: got line "use of uninitialized value at
/mimmo/netscape/new-atlavia/cgi-bin/registrazione/form_anagrafica
.cgi line 32.")
Tra l'altro mi indica la linea 32 anche se il file ha meno di 30 righe di
codice.
Chi sa darmi consiglio su che genere di problema può essere?
Ciao,
    Ivan

 not produce a valid header 
Piu` chiaro di cosi`...
	print $query->header	# must be at the beginning of the output
-- 
Baci,
Mony

 wrote in message
news:abr6m0$rlg$1...@newsreader.mailgate.org...



Fai copia & incolla quando posti codice.
---
Mario Rizzuti

 wrote in message
3ce11aeb$0$228$4d4e...@read.news.it.uu.net...

Se c'e' l'header dovrebbe funzionare. Prova a vedere che succede con uno
script minimo:
#!usr/local/bin/perl
print "Content-type:text/html\n\n";
print "ok";
---
Mario Rizzuti


wrote:

Newsgroup: it.comp.lang.perl
Titolo: form mail

salve, avete qualcosa come form mail, cioe' mi servirebbe il perl che quando
mi compialno il modulo , ad esempio un 'iscrizione .. con i loro dati ,
la persona cliccando su un pulsante il per ricompila il modulo con i suoi
dati scritti, il quale puo' stampare e mandarcelo via posta.
grazie
luca
03474...@tin.it

 DAI  RAGAZZI.....


 > quando mi compialno il modulo ,
[...]
- Non solo questo non si degna nemmeno di provare a guardarsi intorno
  per procurarsi da solo le risorse sw (disponibili a cianfo ovunque)
  che gli servono,
- Non solo non degna il NG di un minimo di sintassi decente, in modo da
  non costringere chi legge a decrittare un italiano incomprensibile,
- Non solo non si prende nemmeno la briga di rileggere il proprio scritto
  per eliminare almeno i refusi piu' grossolani...
Il bello e' che quando la gente si limita pazientemente ad ignorarlo
(anziche' magari suggerirgli di raggiungere un'idonea destinazione) lui si
altera anche!
ciao, marco
--
Marco Cacchiani                                
e-mail:ma...@sirius.pisa.it
Public pgp key:         
http://www.sirius.pisa.it/marco/pgp_public_key.asc
Sirius Servizi Informatici                     e-mail: 
in...@sirius.pisa.it
Parco Teatro Pasolini, 1                       Phone:  +39 (50) 865120
I-56019 - Vecchiano                            Fax:    +39 (50) 860260
(Pisa - ITALIA)                                
http://www.sirius.pisa.it/

 wrote in message
9868069...@vega.sirius.pisa.it...


   che gli servono,
$ perldoc -f cianfo
No documentation for perl function `cianfo' found
$ perldoc -q cianfo 
No documentation for perl FAQ keyword `cianfo' found
Che l'è sto cianfo?? :-)
(ovviamente voglio anche l'etimologia!!)
Ciao
M.
-- 
rm -rf 
and be happy

 (ovviamente voglio anche l'etimologia!!)
Per l'etimologia mi sto attrezzando :)


 per di piu` in calce? :-/
Hai perfettamente ragione scusa, l'ho inviato senza pensarci!
Ciao
}{arco

 Per l'etimologia mi sto attrezzando :)
Resto in attesa! :-))


Newsgroup: it.comp.lang.perl
Titolo: [newbie] Editor Perl e compilatore Perl sono la stessa cosa?

Ciao a tutti!
Come da subject voglio un chiarimento.
Questo perche' vorrei controllare degli script che devo mettere su un
sito senza doverli uploadarli. Per questo ho scaricato omniHTTPd 2.0 e
l'ho installato e settato come si spiega su 
www.ikaro.net
. Ora fino a
che visualizzo l'html tutto ok, ma nel sito spiega che x il perl ci
vuole un compilatore ed una libreria .dll. Ora io sto usando x
modificare gli script in perl Aracnophilia e vorrei quindi sapere se
mi basta o se nel sito secondo voi intende un'altra cosa. Se fosse
vero il 2 caso, cosa mi serve?
Grazie a tutti
P.S. Sono nel NG giusto?

 P.S. Sono nel NG giusto?
Per il momento si, quando inizierai ad avere i problemi con i CGI ti
conviene spostarti su it.comp.www.cgi !
Ciao
--ev
Newsgroup: it.comp.lang.perl
Titolo: caratteri printable

Salve,
     volevo sapere se la seguente reg era giusta e sicura per eliminare 
tutti i caratteri non printable da una stringa:
my $input =~ s/[^ -~]+//g;
grazie

 grazie
in perldoc perlre trovi le classi gia' pronte.
Per le tue necessita' valuta la classe :print: o la classe :graph:
es: elimina tutti i char SENZA simbolo grafico:
$str = "123 456  nrrntt   xdfhgdsgr  rnnr sgfsgn";
$str =~ s/[^[:graph:]]//g;
print $str ,"n";
123456xdfhgdsgrsgfsg
----
es: elimina tutti i char CON simbolo grafico:
$str = "123 456  nrrntt   xdfhgdsgr  rnnr sgfsgn";
$str =~ s/[[:graph:]]//g;
print $str ,"n";
----
la classe print matcha anche con alcuni caratteri blank, ma non so' quali.
Ciao
Roberto.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Per le tue necessita' valuta la classe :print: o la classe :graph:
ti ringrazio, ma preferire la versione reg-exp, secondo voi qual'è la 
migliore?
$string =~ tr/\x80-\xFF//d;
$string =~ s/[\x80-\xFF]//g;
$string =~ s/(.)/(ord($1) > 127) ? "" : $1/egs;
$string =~ s/[^ -~]+//g;
grazie

$string =~ s/[^ -~]+//g;
Qualsiasi espressione che faccia riferimento al codice, o all'ordine,
o ad un range di caratteri, č dipendente dalla codifica in cui assume
di operare. Le classi invece seguono il local.
All'interno di una (presumibile) codifica ascii, le espressioni
proposte sono, direi, piů o meno equivalenti. Tanto vale, a questo
punto, stare sul semplice e usare la prima o l'ultima.
Ciao.

 punto, stare sul semplice e usare la prima o l'ultima.
ripensandoci ho deciso che terrò solo la gamma di caratteri da 0x20 a 
0x7E ... come lo faccio con una re?
grazie

 wrote in message
news:dontmewithme-CBFD...@news.tin.it...


Newsgroup: it.comp.lang.perl
Titolo: Apache e win95

Ho installato apache su win95, ma non riesco a far caricare uno script
direttamente dall' index.html. Sto provando con un contatore e se lo
richiamo direttamente scrivendo nell'indirizzo: localhost/cgi-bin/
counter.pl
funziona perfettamente. Ho fatto diverse prove di configurazione con l'
httpd.conf ma con scarsi risultati. Il codice che richiama il counter nella
pagina html e':
<!--#exec cgi="/cgi-bin/counter.cgi" --> (ho provato a mettere tutti i
percorsi possibili).
Se qualcuno avesse qualche consiglio...
un saluto
wa...@freemail.it

 wrote in message 8grkdv$fhi$1...@news.mclink.it...

Probabilmente non hai configurato correttamente l'esecuzione dei comandi
Server Side Include (di cui fa parte <!--#exec ........).
Se necessiti di un aiuto in italiano su come fare, collegati qui:
http://myweb.3q.to/docs/cgi_win9x.html
Ciao,
buon lavoro, Ezio BOnsi
PS: quesiti sui webserver č meglio postarli su it.comp.www.cgi

 PS: quesiti sui webserver č meglio postarli su it.comp.www.cgi
Scusa se continuo qui, ma ormai la discussione e' avviata...
Ho letto e riletto, provato e riprovato: nulla e' cambiato :(
Ma un httpd.conf per dare una sbirciatina?
Grazie comunque per la risposta.
un saluto
wa...@freemail.it
Newsgroup: it.comp.lang.perl
Titolo: moduli per grafici

Ciao a tutti..
ho preparato alcuni script in perl che generano dei grafici 3d,
come torte, linee, etc, utilizzando il modulo GD::Graph3d.
Perň spesso ho dei problemi, in particolare con il lines3d,
in quanto le linee vanno "fuori" dal grafico,
o i valori vanno oltre quelli reali (quasi come se ci fosse un +1000)...
Cercando su Cpan ho visto che questi moduli sono molto datati (2002)..
esiste qualche valida alternativa?
Perchč fin'ora non ho trovato un granchč...
Mille grazie
bye ;-)


Hai provato DBD::Chart?
(
http://search.cpan.org/~darnold/DBD-Chart-0.81/
)
Esempi:
http://search.cpan.org/src/DARNOLD/DBD-Chart-0.81/dbdchart.html
Ciao
gmax
-- 
   ____ ____  _____ _   _
  / _  |    \(____ ( \ / )
( (_| | | | / ___ |) X (
  \___ |_|_|_\_____(_/ \_)
(_____|
MySQL Certified Professional
Sapere, saper fare, fare, far sapere
http://gmax.oltrelinux.com

 
Grande!!
Ci sto già lavorando un po' su, e la cosa sembra interessante...
Ancora grazie
	svetj

 Grande!!
Si', Perl e' grande ... e CPAN e' il suo profeta. ;)
  Raffaello

Newsgroup: it.comp.lang.perl
Titolo: Spedire mail(ma in Windows NT)

Salve a tutti
Avrei bisogno di uno script che spedisca, ad un indirizzo E-Mail, un
file in attach.
Il tutto dovrebbe girare su una macchina NT, quindi non utilizzando
sendmail ma possibilmente outlook.
Grazie in anticipo
Ciao Gennaro

use Mail::Sender;
lo trovi chiaramente su 
http://www.ActiveState.com/packages/zips/
e in particolare
http://www.ActiveState.com/packages/zips/MailTools.zip
 (77 kB)
l'ho usato (senza mandare allegati, che sono comunque previsti)
sotto WinNT
Non necessita di nient'altro che di perl (non serve dunque neanche Outlook - che
tra l'altro non so neanche cosa sia)
ciao, antonio

-- 
ASTAT - Istituto provinciale di statistica
viale Duca D'Aosta, 59
I - 39100 Bolzano
tel: 0471/994045  fax: 0471/994008
http://www.provinz.bz.it/astat

 tra l'altro non so neanche cosa sia)
E' un client di posta elettronica/news per Windows di Microsoft
Newsgroup: it.comp.lang.perl
Titolo: Come passare al cgi l'ordine?

Buongiorno,
ho tentato (con le mie conoscenze del Perl ) di fare un cgi per l'invio a me
stesso di ordini di libri.
Purtroppo inciampo in alcuni problemi che desidero esporvi affinchè possiate
cercare di aiutarmi.
Innanzi tutto devo dire che ho diviso in frames il video e che tutto
funziona bene.
Nel frames[0] ho memorizzato il carrello della spesa creato con javascript
come segue:
Var Carrello=new Array;
function Prodotto(Codice,Descrizione,Prezzo,Qty)
{
this.Codice=Codice;
this.Descrizione=Descrizione;
this.Prezzo=Prezzo;
this.Qty=Qty;
Adesso ho il carrello vuoto e la funzione prodotto per creare una voce da
aggiungere al carrello
Per aggiungere una voce  uso il seguente codice:
var i = Carrello.length;
Carrello[i]=new Prodotto(Codice,Descrizione,Prezzo,Qty)
Come si nota pertanto la variabile carrello è un array che contiene in ogni
riga 4 celle in cui c'è rispettivamente il codice, la descrizione del
prodotto, il prezzo e la quantità ordinata.
Tutto facile e funziona tutto molto bene.
Adesso però se chiamo la pagina d'ordine cominciano i guai per me.
Nella pagina d'ordine ho un form da riempire a cura di chi ordina il libro o
i libri.
Quando con il tasto submit mi spedisce i dati personali, io non so come
inviare contemporaneamente  lavariabile vettoriale Carrello  (Array)
MULTIDIMENSIONALE .
Se lo inserisco come stringa in un campo hidden del form quando il programma
cgi decodifica il tutto si trova di fronte ad alcune coppie di dati
nome=valore dove sono registrati i dati personali di che fa l'ordine, ma
quando arriva alla coppia nome=valore che contiene l'ordine accade che lo
split non riesce da solo a decodificare la stringa dell'ordine in quanto
proviene da un array multidimensionale.
Come fare?
Io vi sarei molto grato se poteste aiutarmi
Molte grazie in anticipo
Paolo

this.Qty=Qty;
Non e' una buona idea !!! Il JavaScript (in questione) e' client side ed e'
troppo semplice modificare il contenuto delle variabili, pensa al prezzo!
Lascia perdere il carrello client side, e usa Javascript solo per i
controlli di immissione dei dati di un form!
Alex

Newsgroup: it.comp.lang.perl
Titolo: verifica file in upload ed eventuale compressione...

ciao,
avrei un problema da risolvere...
Dovrei poter effettuare un controllo sui file uploadati da parte degli
utenti... dovrei controllare se trattasi di file zippati o meno e in caso
negativo procedere alla relativa compressione (Zlib?). Il tutto in Perl,
of course ;)
Qualcuno puņ/vuole darmi qualche dritta?
grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 caso negativo procedere alla relativa compressione (Zlib?). 
Una volta ricevuto il file, puoi aprirlo utilizzando il modulo
Archive::Zip per verificare che si tratti in effetti di un archivio Zip.
Lo stesso modulo Perl ti permette eventualmente di creare un nuovo
archivio.
	A presto, Michele.
-- 
Michele Beltrame
http://www.italpro.net/mb/
ICQ# 76660101 - e-mail: 
m...@italpro.net
Newsgroup: it.comp.lang.perl
Titolo: file test

Ciao a tutti.
Dovrei verificare, prima di aprire un file per modificarlo, che qualche
utente non lo stia gia' modificando: quindi dovrei verificare se il file e'
in uso in quel momento. Il solo file test che sembrerebbe indicato e' il -t
che pero' e' riferito solo ai file handle (e infatti non  funziona).
Che faccio??
Precisazione: sto parlando di un file residente su un server e contenente i
dati di accesso utenti: quindi, ad ogni accesso il file viene aperto,
aggiornato e riformattato. E mi sono impantanato.
Inoltre (visto che ci siamo) utilizzando i file test -r -w -x ho visto che
perl mi restituisce la proprieta' del file rispetto all'owner, mentre in un
manualone avevo letto che dovrebbe restiuire la propieta' rispetto agli user
o ai group. Se riuscissi a modificare, infatti, le proprieta' per l'user,
potrei, al posto del file test, modificare addirittura il CHMOD durante il
processo di aggiornamento. Sto parlando a vanvera o il mio cervello produce
ancora qualcosa di comprensibile e sensato?
Grazie a tutti e un ciao
Andrea

andrea wrote:

Cambia approccio... 
$ perldoc -f flock
-- 
Saluti,
Giancarlo

Newsgroup: it.comp.lang.perl
Titolo: OPERATORI UGUAGLIANZA

Ho notato che l'operatore di uguaglianza funziona solo con i numeri; ho
fatto le seguenti prove:
111111==1  restituisce FALSO
aaaaa==b    restituisce VERO
Come faccio a confrontare due stringhe di caratteri?
Grazie a chi mi risponde.

 ha scritto nel messaggio
news:1DNX4.6066$VM3....@news.infostrada.it...


Newsgroup: it.comp.lang.perl
Titolo: Cambiare un carattere di una stringa

Salve a tutti,
vorrei cambiare un carattere di una stringa.
Potrei usare una regex per estrarre la parte della stringa prima di
quel carattere, vedere quanto e lunga, e quindi usare substr.
Oppure potrei usare direttamente s/// , che mi sembrava piu'
semplice . Ma ho un problema: se dovessi cambiare quel carattere ad
es. in una 'a', farei qualcosa tipo
$str =~ s/^(regex_parte_precedente).(.*)$/$1a$2/;
(il carattere che voglio cambiare divide la stringa originale in due,
che riconcateno dopo mettendoci in mezzo il carattere che voglio). Ma
se volessi cambiare il carattere con ad es. un '1', otterrei
s/.../$11$2/
che dovrebbe essere un "dollaro uno seguito da un uno", e non un
"dollaro undici".
Come fare? Non posso usare s/// ?
Thx,
Pleg

 "dollaro undici".
   ${1}1$2
M


Grazie!
Pleg
Newsgroup: it.comp.lang.perl
Titolo: perché

non funziona ?
qualcuno puo´indicarmi la str***** che faccio per favore ?
$stringa='Prova'.chr(252).chr(252);
for ($i = 0; $i < length $stringa ; $i++)
   {
     $bad_char=0;
     $carattere = substr($stringa,$i,1);
     $ascii_code=ord($carattere);
     if ($ascii_code <= 126  || $ascii_code =>33 )
          {$bad_char=$bad_char}
     else {$bad_char=$bad_char+1}
     print $bad_char.'  '.$carattere.'  '."$ascii_code\n";
   }
Io vorrei che "semplicemente" che se il codice ascii delle lettere
della mia stringa non rientra tra 33 e 126 mi venisse incrememntato
bad_char.
Grazie in anticipo
Giovanna

 bad_char.
Non credo ci fosse bisogno di creare un mostro del genere! ;)
<code>
	$badchar=0;
	map {
	    $badchar++ if (ord($_)<32) or (ord($_)>126)
	} split //,'Prova'.chr(252).chr(252);
	print "$badchar\n"
</code>
Letture consigliate:
	perldoc -f map
	perldoc -f split
	perldoc perlvar
	perldoc perlre
-- 
Baci,
Mony

 {$bad_char=$bad_char}
Tralasciando un problema di precedenza degli operatori ( in liena 
generale con le parentesi e' meglio abbondare)...
be'..se gli dici di lascialro uguale a se stesso se e' minore di 127 o 
maggiore di 32.
Ti sfido a trovarmi un numero che sia
non minore di 127 
ne 
maggiore di 32 
;-)
quel numero incrementera' il tuo contatore.
Se usi un and al posto dell' or invece direi che funziona.
ricapitolando:
$stringa='Prova'.chr(252).chr(252);
foreach $carattere (split(//,$stringa)) {
        $ascii_code=ord($carattere);
        $bad_char=($ascii_code <= 126 and $ascii_code =>33 )?0:1;
        print $bad_char.'  '.$carattere.'  '."$ascii_code\n";
}
-- 
Saluti,
Giancarlo

         $bad_char=($ascii_code <= 126 and $ascii_code =>33 )?0:1;
Attento, Giovanna ha usato "=>", ma intendeva scrivere "<=". 
Tu hai incollato un frammento del suo codice, ma ti è sfuggito lo
svarione.
Per Giovanna: <= e => sono due operatori diversi, con significato diverso.
Il primo è quello che volevi usare, il secondo è sostanzialmente
un sinonimo della virgola (,) con una leggera differenza.
 perldoc perlop.
Max


 Attento, Giovanna ha usato "=>", ma intendeva scrivere "<=".
Si, ma quello giusto immagino fosse >=
-- 
Saluti,
Giancarlo
Newsgroup: it.comp.lang.perl
Titolo: Modulo Spreadsheet-ParseExcel-0.2602 quanta ram!

Ciao a tutti,
leggendo nel news group ho trovato suggerimenti per utilizzare tale
modulo per trasformare files xls in csv.
Ho fatto un mio piccolo script seguendo le indicazione rilasciate con
tale modulo.
La cosa che mi ha colpito particolarmente è che si mangia un sacco di
ram.
Cioè un file excel di quasi 5 mega, fa occupare allo script perl circa
90 Mega di Ram.
Visto che il mio piccolo script deve elaborare un numero variabile di
file xls ho provato a "distruggere" o almeno credo ciò che la libreria
crea, ponendo ad alla fine del ciclo che elabora il file execl le
variabile utilizzate a undef, ma non ho ottenuto miglioramenti
nell'utilizzo di memoria.
 
Nessuno ha avuto a che fare con questo modulo ed ha notato questo
comportamento?
Mirko.

comportamento?
Io ho usato il modulo WriteExcel, e non ho mai incontrato problemi, creando
anche numerosi file, di dimensioni non grandissime, ma con centinaia di
fogli per cartella. E' vero però che non mi sono mai neanche curato di
controllare l'occpuazione di memoria.
Prova a vedere se va meglio con Win32::OLE.
Ciao.

Newsgroup: it.comp.lang.perl
Titolo: arrotondare numeri!

Salve,
Se ho una variabile a=1.2233445 come posso arrotondarla alla 1 cifra
decimale o alla seconda ecc......?
Grazie



 $b = sprintf "%.2f", $a
 dovrebbe arrotondare alla seconda cifra decimale.
 
 Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@usa.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

 wrote:
% > Se ho una variabile a=1.2233445 come posso arrotondarla alla 1 cifra
% > decimale o alla seconda ecc......?
% 
%  $b = sprintf "%.2f", $a
% 
%  dovrebbe arrotondare alla seconda cifra decimale.
Troncare. Io sommereri 0.005 :-)
.mau.




No. printf e sprintf arrotondano, non troncano.
  printf "%.2f", 1.444;
 
produce 1.44
 mentre 
 
  printf "%.2f", 1.445;
 
produce 1.45
Per me questo e' arrotondare. :) Comunque questa sta in perlfaq4, " Does
perl have a round function?"


Newsgroup: it.comp.lang.perl
Titolo: Paginazione in Perl

Esistono moduli per la paginazione in perl, dove
per paginazione intendo la suddivisione di una
tabella in più tabelle, per essere visualizzata meglio
in una pagina web. (Tipo quei pulsantini con 1,2,3 ...10 che
vedete ogni tanto in fondo alle tabelle quando sono presenti molti dati).
Mi colledo con il perl al database, recupero i dati,
li inserisco in tabella ma come paginarli?
Devo usare forse PHP per fare queste cose?
Grazie in anticipo a quelli che hanno la voglia
e la pazienza di rispondere!
Ciao ciao!
Davide.

 vedete ogni tanto in fondo alle tabelle quando sono presenti molti dati).
Forse ti può andar bene Data::Page
 
http://search.cpan.org/~lbrocard/Data-Page-1.01/
ciao,
S.
Newsgroup: it.comp.lang.perl
Titolo: Flush su schermo

Salve a tutti,
ho un programma che prende tutti i file di una directory e ci fa su delle 
operazioni. Dato che prende parecchio tempo, vorrei avere una sensazione del 
progresso fatto (e controllare che non sia crashato da qualche parte :) , 
visto che per ora rimango con la shell vuota per qualche ora e la cosa mi 
inquieta :)
Mi piacerebbe qualcosa di discreto, come un semplice punto stampato per ogni 
file elaborato:
foreach my $file (@files) {
    # fai qualcosa
    print ".";
}
ma cosi' non stampa a schermo. Come faccio a flushare senza dover fare 
print".\n" ?
Thx,
Pleg 

print".\n" ?
Dovrebbe essere sufficiente assegnare un valore vero alla variabile
autoflush ($|=1;).
Comunque, ci sono diversi moduli dedicati allo scopo; se cerchi
"progress" su PPM o CPAN potrai senz'altro trovare quello adeguato ai
tuoi gusti e al tuo contesto operativo.
Ciao.
Newsgroup: it.comp.lang.perl
Titolo: perl, sendmail e berkleyDB

Salve a tutti.
Un quesito per i più esperti.
Vorrei realizzare uno script in perl che vada ad aggiornare il file
/etc/mail/virtusertable  (ma non solo questo) in uso da Sendmail,
l'smtp server di LINUX.
Il sendmail in uso è in v.8.9.3 e so che usa per i suoi file di
database (in pratica per creare i db virtusertable, access, users,
ecc..) il formato BerkleyDB 2.0.
Ebbene in perl, il modulo DB_File in dotazione supporta il formato
di hashing 1.x, mentre per poter trattare il formato 2.0 si deve
aggiornare il perl installando il modulo BerkleyDB.  L'ho fatto, e
naturalmente "non funziona".
Nessuno di voi ha risolto il problema?
Grazie in anticipo delle risposte.
Dr. Francesco De Carlo
Sefit Informatica snc
www.sefit.it
fdec...@sefit.it

 
"Non funziona" non vuol dire molto. 
Una possibile essere fonte di problemi (sto solo ipotizzando) è che le
stringhe nei db generati da programmi in C potrebbero essere
null-terminated, mentre le stringhe del Perl non lo sono.
Farei un tentativo specificando le chiavi e i valori nella forma:
 $key = "testo\0";
Max


wrote:

Tentativo fallito ;-)
Mi spiego allora meglio:
1. il sendmail usa delle tabelle esterne (database) dove mantiene
alcune informazioni sugli host che possono accedere al server, sugli
utenti, ecc. Queste tabelle sono in realtà dei DB con ricerca hash
e vengono "compilati" con "makemap hash nometabella.db < nometabella"
dove "nometabella" è il file sorgente contenente le informazioni in
chiaro.
2. questi file .db così generati possono essere aggiornati on-the-fly
(aggiornamento di "nometabella" e quindi makemap su ques'ultimo)
senza dover killare e far riparte il processo di sendmail.
3. ecco perchè è possibile (e lo è) aggiornare via Perl questi file
compilati di sendmail (ripeto: file .db e non i sorgenti che servono
soltanto se si usa makemap).
4. Perl usa i comandi dbmopen/dbmclose, oppure il modulo DB_File (con
il comando "tie") per accedere (scrivere, leggere, aggiornare) i
suddetti file .db.
5. ECCO QUI IL PROBLEMA: con i metodi usati al punto 4) non si riesce
a leggere/scrivere file compatibili con sendmail (v.8.9.3). A quanto
pare il problema starebbe nella differente versione del sistema di
hashing utilizzato da sendmail/makemap (2.x) e dai comandi del
perl (v.1.x).
Credo sia tutto... in ogni caso il problema è sempre lo stesso:
aggiornare con perl i file della directory /etc/mail/*.db di
sendmail per Linux.
Grazie a chi vorrà rispondere!
Francesco De Carlo
fdec...@sefit.it
Newsgroup: it.comp.lang.perl
Titolo: libro Perl guida di riferimento

Salve,volevo sapere se qualcuno poteva farmi un favore enorme.Ho visto in
libreria il libro edito da apogeo "Perl guida di riferimento" .... la parte
che mi interessa di + è quella sui socket e volevo chiederevi se qualcuno di
voi poteva scannerizzarmi quel capitolo ed inviarmelo per
posta.(
mo...@email.it
)
Capisco che per voi è un po una rottura ma mi risparmiate un bel prezzo.
Se avete bisogno che contraccambio al favore sono ben contento di farlo.Io
possiedo principalmente libri in merito alla sicurezza.
grazie

powernews.libero.it
 wrote:

Hai già letto:
http://search.cpan.org/doc/GBARR/IO-1.20/IO/Socket.pm
Dovrebbe aiutarti un bel po. 
Ciao
A.
***************************************
messaggio inviato tramite HostSearch.it
---------------------------------------
---> 
http://www.hostsearch.it/newsgroup
***************************************

Newsgroup: it.comp.lang.perl
Titolo: fare un forum in perl

Certo che fare un forum facilissimo in perl è un vero lavoraccio...
...questa è la primissima versione...
http://www.theartofweb.netfirms.com/cgi-bin/BBSMART_PERL/index.cgi
c'è veramente tanto ancora da fare...ma proprio tanto...

 c'è veramente tanto ancora da fare...ma proprio tanto...
Come inizio non è affatto male!

 wrote:

Potresti dirci qualcosa in piu`?
Cosa usi per lo store dei messaggi? 
Usi un sistema di templating?
Ti sei avvalso di qualche modulo particolare?
Cose del genere.
ciao,
S.
-- 
Stefano Rodighiero      |  
http://larsen.perlmonk.org
mailto:
lar...@perl.it
   |  
http://www.perl.it

 
http://www.theartofweb.netfirms.com/cgi-bin/BBSMART_PERL/index.cgi
Purtroppo avrete notato un problema che non riesco a risolvere...leggere 
i cookies di un utente:
use CGI::Cookie;
my %cookies = fetch CGI::Cookie;
 
my $stored_username = $cookies{'bbsmart_user'}->value;
my $stored_usermail = $cookies{'bbsmart_mail'}->value;
my $stored_usertime = $cookies{'bbsmart_time'}->value;
il cookie alla prima botta non esiste (verra scritto più tardi dopo aver 
inviato il post) e quindi mi ritorna questo errore:
Can't call method "value" on an undefined value at newtopic.cgi
Se invece i cookies esistessero non mi darebbe questo errore...(già 
provato!)
come risolvo...

 provato!)
Non conosco il modulo ma, a prescindere da soluzioni proprie del modulo 
stesso, puoi fare una cosa del tipo:
my $stored_username='';
eval {
	$stored_username = $cookies{'bbsmart_user'}->value;
};
in questo caso, se desse errore, sarebbe gestito da eval per cui il 
codice non verrebbe proprio eseguito e avresti la variabile vuota, se 
invece venisse eseguito, allora nella variabile avresti il valore richiesto.

accorete al mio forum e bombardatel di posts:
http://www.theartofweb.netfirms.com/cgi-bin/BBSMART_PERL/index.cgi

nuovo address:
http://www.theartofweb.netfirms.com/cgi-bin/bbsmart/bbsmart.cgi
Newsgroup: it.comp.lang.perl
Titolo: dipendenze e conflitti tra moduli

Ciao a tutti,
ecco i miei script :
sript cgi:
#!/usr/bin/perl
#use strict;
use PACKAGE_A qw(A);
A( );
package PACKAGE_A;
use Data::Dumper;
use PACKAGE_B qw(B);
use Exporter;
our @ISA       = qw (Exporter);
our @EXPORT_OK = qw (A A_1);
sub A {
	print "Content-type: text/plain\n\n";
	print "\n fonction A \n";
	my $objet_b = PACKAGE_B->new();
	print "\n objet b: ";
	print Dumper($objet_b);
	B();
}
sub A_1 {
	print "Content-type: text/plain\n\n";
	print "\n fonction A_1 \n";
}
package PACKAGE_B;
use Data::Dumper;
use PACKAGE_A qw(A_1);
use Exporter;
our @ISA       = qw (Exporter);
our @EXPORT_OK = qw (B);
sub new {
	my $class = shift;
	my $this = {};
	$this->{B} = "OK new B";
	bless $this, $class;
	return $this;
}
sub B {
	print "Content-type: text/plain\n\n";
	print "\n fonction B \n";
	A_1();
}
1;
Ricapitalando, dal cgi chiamo la funzione A( ) del Package A che
chiama la funzione B del Package B, che chiama la funzione A_1 del
Package A. Proprio in quest'ultimo passaggio mi viene dato errore, in
quanto viene cercata la funzione A_1( ) nel modulo B (e naturalmente
non viene trovata). Chiaramente se invece chiamo la funzione A_1 nella
maniera seguente tutto è ok:
PACKAGE_A::A_1()
Il mio problema pero' è che non voglio chiamare la funzione in questa
modo.
Utilizzando in maniera appropriata Export pensavo fosse possibile
chiamare la funzione A_1 dal package B direttamente con il suo nome.
Questo è possibile oppure è strettamente necessario utilizzare il nome
completo in quanto i due moduli si "richiedono" a vicenda? E se è
possibile qualcuno sa darmi una pagina web che tratta questo
argomento? Grazie anticipatamente per le risposte.

 our @EXPORT_OK = qw (B);
... e qui.
Newsgroup: it.comp.lang.perl
Titolo: problemi nella concatenazione???

Per scrivere allinterno di un file gia' aperto una stringa contenuta in uno
scalare, utilizzo la seguente espressione:
print FILE $scalare;
adesso ho un problema in quanto ho dei filehandle "variabili" del tipo
FILE."$listafiles", che vengono utilizzati correttamente nelle altre parti
del programma, ma non in istruzioni come quella sopra descritta, ad esempio,
l'istruzione:
print FILE."$LISTAFILES" $scalare;
genera un errore:
Scalar found where operator expected at 
prova.pl
 line 34, near
""$listafiles" $scalare"
(Missing operator before $scalare?)
Forse sbaglio con i doppi apici o con la concatenazione, mentre controllo
ringrazio chi mi dara' lumi.
ciao,
fabio

 nelle altre parti del programma, 
  Mi permetto di dubitare della tua affermazione. Il file handle ha un
tipo diverso dalla stringa e, per quel che ne so, non e` possibile
concatenarci uno scalare.
	Alla prossima,
		Marco

 Marco
Fai bene a dubitare della mia affermazione, ho infatti appurato che i
filehandle suddetti non venivano utilizzati correttamente.
Il mio problema in effetti e' il seguente: lo script perl in oggetto
dovrebbe, per prima cosa aprire una directory da me indicata, e inserire i
nomi dei file in essa contenuti in un array, tramite le istruzioni:
#!/usr/bin/perl
opendir(DIR, "/root/prova") || die;
@listafiles = readdir DIR;
# fin qui tutto ok, pero' adesso vorrei aprire ognuno dei file della
directory suddetta tramite il rispettivo filehandle #e ovviamente, vorrei
creare una procedura che lo faccia automaticamente, senza dovrlo manualmente
fare io #per ognuno dei file della directory. La procedura automatizzata mi
sarebbe cosi' utile in quanto lo script #sarebbe in grado, ogni volta che
viene avviato, di aprire tutti i file contenuti nella directory,
indipendentemente #dal numero di questi ultimi e da eventuali modifiche...
per ottenere cio' ieri ho provato con quel tipo di concatenazione che si e'
pero' rivelata fallimentare, oggi sto tentando altre soluzioni che pero' mi
confondono, riportandomi sempre verso il C :-(...
Se hai, o avete, una soluzione al tipo di problema posto, fatemi sapere,
ringrazio tutti anticipatamente.
ciao,
fabio

 da eventuali modifiche...
  Mi sembra un comportamento utopistico: il sistema operativo potrebbe
non consertirti di aprire cosi` tanti file contemporaneamente oppure
potresti ritrovarti con il name space intasato.
  Comunque, se persisti, puoi pensare di incapsulare i tuoi handle negli
oggetti di una delle classi della gerarchia IO oppure della classe
Filehandle ovvero usare il modulo Symbol. Per l'occasione, consulta le
FAQ:
	$ perldoc perlfaq5
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.perl
Titolo: Resettare le variabili $1, $2,...

Buongiorno a tutti,
ho bisogno di eseguire due controlli su espressioni regolari, uno di seguito
all'altro;
A quanto ho capito, non mi è possibile lanciare le due espressioni di
seguito in quanto nella prima espressione faccio abbondante uso della
memorizzazione delle corrispondenze nelle variabili $1, $2...etc...che
puntualmente si ripercuotono sull'esito della seconda espressione, che
infatti non funziona.
Una possibile soluzione potrebbe essere quella di inserire le due
espressioni in delle sub, in modo da renderle 'cieche' fra di loro, ma in
questo modo si perde parecchio di leggibilità del codice, FATTORE
DETERMINANTE in quanto il mio codice un domani (spero presto!) dovrà essere
preso in mano da un altro team di sviluppo.
La domanda è: c'è la possibilità di resettare queste variabili?
Mi basterebbe anche un cenno su dove andare a cercare.
Grazie infinite.
Gianfranco
-"Dico io...ma non ci dovrebbero essere due sportelli sui lati?"
-"A Lei non Le sfugge nulla, Capo!"
-"Beh, dopo 20 anni..."
(chi indovina che film è ?)

 infatti non funziona.
Perche' mai? Dimostrazione, please. Intendo codice, dati in ingresso, dati
in uscita attesi, dati in uscita ottenuti.
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

 ha scritto nel messaggio
news:8v36tr$pqn$2...@menelao.polito.it...


 Appena posso invierò il codice...è lunghetto.
Perche' mai? Non dovrebbero essere due righe, ovvero due RE, piu' qualche
comando accessorio?


 regexp sono gli stessi per $1 etc;
Ipotizzo una spiegazione del problema che hai incontrato. 
Se una regexp non... "matcha", i vari $N non vengono reinpostati. Se,
quindi si utilizzano i valori di quelle variabili senza assicurarsi che la
regexp abbia trovato riscontro, può capitare che si ritrovino valori che
risalgono alla precedente applicazione di una regexp.  Il seguente codice,
ad esempio:
 "brazo" =~ /^(b)(r)/;  print "$1 $2\n";
 "brazo" =~ /^(a)/;     print "$1 $2\n";
 "aieie" =~ /^(a)/;     print "$1 $2\n";
stampa
 b r
 b r
 a 
Come si vede, è sufficiente che la regexp abbia successo perchè le
variabili vengano resettate. Diversamente, le variabili mantengono il loro
valore.
Da notare intoltre, che le variabili $N hanno scope dinamico, analogo,
quindi, a quello si determina con la keyword 'local'. Se, ad esempio, si
chiude in un blocco la prima riga del codice precedente, questo avrà
effetto sul valore di $1 e $2:
 
 {  "brazo" =~ /^(b)(r)/;  print "$1 $2\n"; }
    "brazo" =~ /^(a)/;     print "$1 $2\n";
    "aieie" =~ /^(a)/;     print "$1 $2\n";
Output:
 b r
 a 
Max

 ha scritto nel messaggio
news:Pine.LNX.4.10.100111...@c64.comm2000.it...
