Newsgroup: it.comp.lang.perl
Titolo: Testo molto lungo

Piccolo problema: ho un testo molto lungo che leggo da file: come faccio a
leggerlo a pezzi tipo dall' inizio fino al secondo \n ( e metterlo in
$testo1) o al terzo, dal terzo fino ai due successivi ($testo2) etc etc?
Grazie mille!
Paolo



per leggere una riga alla volta :
<code>
  open(INPUTFILE, "< $file") || die ("Cannot open the file $file.\n");
  while ($line=<INPUTFILE>)
	{
	# FAI QUALCOSA CON $line
	}
</code>
Se invece vuoi leggere 2 righe alla volta:
<code>
  open(INPUTFILE, "< $file") || die ("Cannot open the file $file.\n");
  while ($line1=<INPUTFILE>)
        {
	$line2=<INPUTFILE>
        # FAI QUALCOSA CON $line1 e $line2
        }
</code>
Spero di esserti stato utile.
 Raffaello



Se ho capito bene a te serve un sistema per spezzare
un testo lungo in piu` parti ed elaborarle separatamente...
Protresti provare usando la variabile $INPUT_LINE_NUMBER
o in forma piu` succinta $. che ti dice il numero della
riga corrente relativa al file handle aperto.
Se, per esempio, stabilisci che ogni 10 righe devi
fare qualche operazione diversa la condizione che
devi controllare e`:    $. % 10 == 0
Saluti
Alessandro

ok, come già detto se vuoi andare per n linee, se invece vuoi nadare per
bytes dai poi magari uno sguardo anche a perldoc -f sysread
ciao
--
perl -MLWP::Simple -e "getprint(' 
http://perl.4pro.net
 ')"

Grazie mille ci sono riuscito, ora ho una variabile paragrafo che assume
valori diversi in un ciclo; ho quindi due var una paragrafo ed una count;
come faccio secondo voi ad effettuare una operazione ogni due paragrafi od
ogni 3? Li devo contare prima? Chiaramente per come è il ciclo ora, solo
alla fine so quanti sono i paragrafi totali! Avete qualche consiglio?

Ancora più semplice, scusate ma oggi sto in paranoia;
se un evento si verifica quando  ($count == 3) , come faccio a farlo
verificare  anche  al sesto al nono al dodicesimo. So che è una stupidaggine
ma oggi proprio non ne esco!



Stai cercando l'operatore %. Calcola il resto della divisione.
ciao
Stefano

 Stai cercando l'operatore %. Calcola il resto della divisione.
Stefano scusa, mi sa che sono di piombo; nel mio codice questa $ count mi si
incrementa di uno finché non è finito il ciclo; io stampo la mia variabile
per tutte le volte che count incrementa; così va bene: ora mentre stampo
questa variabile volevo controllare (solo alla fine del ciclo so il totale
per come ho fatto il codice) che se é = 3 o = 6 o = 9, mi faccia un'altra
cosa; infatti se lo faccio a mano, con una serie di if funziona solo che
devo ipotizzare che non so quante volte si incrementa e non me lo volevo
calcolare tutte le volte, volevo terminare una volta che il ciclo dell'
array fosse finito tipo se arrivo a 12 faccio 3 6 9 se arriva a 20 faccio 3
6 9 12 15 18 etc.
Saresti così gentile da aiutarmi?

 Saresti così gentile da aiutarmi?
Quello che accomuna i numeri 3, 6, 9, 12... e` che il resto della
divisione per 3 e` 0. 
Nel tuo caso:
while( $count++ ) {
	# Fai qualcosa se il contatore e` multiplo di 3
}
e` equivalente a dire:
while( $count++ ) {
	# Fai qualcosa se il resto della divisione per 3 del contatore 
	# e` uguale a 0
}
Quindi, in Perl:
while( $count++ ) {
	if ( $count % 3 == 0 ) {
		# Fai qualcosa
	}
}
ciao :)
Stefano

Grazie mille!
(Non conoscevo nemmeno l'operatore % (vergogna!!!!) ecco perché non capivo
la tua mail di prima)