Newsgroup: it.comp.lang.perl
Titolo: come togliere..

se devo togliere da una lista di distribuzione totale 2000 e-mail, delle
email, (in linux) e ho il file che è la lista stessa, e un file di quelle da
togliere, come potrei scrivere in perl ?...... è molto complesso ? io ho
iniziato cosi' ma sicuramente ho sbagliato tutto , visto che mi sono perso
!!!!!
########################################################################
#!/usr/bin/perl
        open (PASSWD,    "< alia.utenti") || die "Impossibile aprire
alia.utenti\n\n";
open (TOGLI, " < togli.txt") || die "Impossibile aprire togli.txt.\n\n";
while ($d = <TOGLI>){
push @togli
}
        open (OUT,   ">alia1.utenti") || die "Impossibile aprire
alia1.utenti.\n\n";
    while ($r = <PASSWD>){
if ($r eq $togli){
print OUT
        close (OUT);
close (TOGLI);
        close (PASSWD);
##########################################################################
grazie
carlo

 !!!!!
E' un discreto casino :-) (suggerimento: @togli e' un vettore, $togli uno
scalare...)
Se ci persuadi di non essere uno spammer (almeno parlando per me... che
ci fai con una lista di 2000 indirizzi?)  magari ti si aiuta.
Cheers,
alf

 
##########################################################################
Per me fai troppi cicli in gran parte inutili uno dentro l'altro.
Io farei cosi':
open (TOGLI, 'togli.txt');
while (<TOGLI>) {
        $togli{$_}++;
}
close TOGLI;
open (PASSWD,'alia.utenti');
open (OUT,'>alia1.utenti');
while (<PASSWOD>) {
        print OUT if $togli{$_}
}
close PASSWD;
close OUT;
-- 
Saluti,
Giancarlo

 togliere, come potrei scrivere in perl ?...... E' molto complesso?
No, sono 3 passetti:
- leggi il file con tutti gli indirizzi e lo inserisci in un array.
- idem con il file con gli indirizzi da togliere.
- leggi con perldoc la doc relativa all'intersezione e alla differenza
  di due array!
Il codice è tutto sommato semplice, ma prima di averlo devi persuadere alf! ;-)
Ciao!
--ev

close OUT;
Ma il gioco non era *togliere*? E così invece non ha, alla fine, la pura e
semplice copia di togli.txt? Io ci metterei un not:
...
while (<PASSWOD>) {
        print OUT if !$togli{$_}
}
...
O mi sono imbarbagliato?
Ciao.

ci fai con una lista di 2000 indirizzi?)  magari ti si aiuta.
Spedisce a 2000 indirizzi, che altro? Una lista di 2000 iscritti adulti
consenzienti non è poi una cosa straordinaria. Certo, magari, ci si può
aspettare che l'amministratore di una lista di 2000 iscritti sappia come
gestirla, senza bisogno di chiedere qui. A priori però è un po' azzardato
trarre conclusioni.
E, in ogni caso, visto che deve *togliere* degli indirizzi, tanto vale
aiutarlo comunque.
Ciao.

 pura e semplice copia di togli.txt? Io ci metterei un not:
No hai ragione mi sono sbagliato io, ho invertito la logica :-)
Pero', IMHO, meglio
print OUT unless $togli{$_}
-- 
Saluti,
Giancarlo

 aiutarlo comunque.
Gia'. Non avevo consiederato questo aspetto.
E' che di questi tempi (anche dopo avere messo spamassassin) sul tema spam
sono un po' nervoso(*)
Cheers,
alf
(*) Per la serie:  se il pene cresce non lo so, ma i testicoli e' certo.

 !!!!!
La comparazione di liste è così basilare che è sempre un ottimo esercizio 
anche se la bibliografia a riguardo è veramente notevole (forse anche 
troppa...):
List::Compare
Array::Compare
List::Util
Lists::Util
Quantum::Superpositions 
Set::Scalar
Set::Bag
Set::Array
Algorithm::Diff
Su 
http://www.concentric.net/~Jkeen/list/List_Compare_efficiency.txt
c'è poi un benchmark su alcune di quelle implementazioni. 
	- Enrico

 Algorithm::Diff
Senza considerare che si puo' anche usare sort.
-- 
Saluti,
Giancarlo

 ha scritto nel messaggio
news:r5dktugrbu98u0hl4...@4ax.com...


| e visto che ci siamo vi chiedo una mano per uno script che mi ha fatto
| un'amico, ma scriev una stringa alla fine del file che genera piuttosto
che
| all'inizio. mi sapreste dare una mano ?
Senti, in genere questo non è un posto dove la gente fa il lavoro al posto
tuo :-). Qui siamo tutti molto disponibili a "dare una mano" a qualcuno che
sta studiandosi perl, però di solito la cosa funziona così: tu scrivi qui la
linea o la sub che non capisci e qualcuno te la spiega...
Uno script completo a me non fa nemmeno venir voglia di guardarlo, perché mi
fa pensare che il mio aiuto è assolutamente inutile, in quanto mancano le
basi minime di comprensione a chi chiede aiuto.
Ripeto: qui non facciamo lavori per te, ma ti aiutiamo se non riesci a
farteli completamente da solo.
Studiati almeno le basi di perl, e poi si discute, e soprattutto... posta
solo quello che non capisci (e che non sia tutto lo script :-) e qualcuno te
lo spiegherà.
ciao
--
perl -MLWP::Simple -e "getprint(' 
http://perl.4pro.net
 ')"

 tuo :-).
... se non ci paghi ... ;)