Newsgroup: it.comp.lang.perl
Titolo: Lavorare su 2 aree della shell

Il mio problema è questo:
sto cercando di fare una chat in perl tipo bitchx, e vorrei riuscire a
lavorare su 2 aree della shell
cioè nella parte bassa scrivere i comandi da mandare sulle sock in quella
alta ricevere i messag delle chat e del server.
E' da pochissimo che utilizzo qesto linguaggio che mi sta stupendo per la
semplicità e la chiarezza ^_^
qualcuno può aiutarmi? E' come dover creare due Buffer riservandone 1 ai
dati in arrivo (che me li stampa in alto) e l'altro dedicato all'
STDIN...vabè credo che tutti in questo ng abbiano usato almeno una volta
Bitchx : D.
Tnx
Grifisx

alta ricevere i messag delle chat e del server.
Non č chiaro se il problema č solo quello di scrivere i dati in una certa
zona dello schermo, o anche tutta la gestione dell'input/output remoto e
locale. E neppure di quale sistema stai parlando.
Per indirizzare una zona dello schermo puoi usare Term::ANSIScreen, o
Curses, o, in Windows, Win32::Console (e probabilmente anche altri moduli
analoghi).
In Linux, il programma Screen permette di avere finestre affiancate. Non
credo che possano essere gestite indipendentemente dallo stesso processo, ma
puň darsi che in qualche modo si possa arrangiare.
Ciao.

 locale. E neppure di quale sistema stai parlando.
Il sistema č windows per il momento (per motivi particolari che non sto a
spiegare)poi vorrei farne il porting su linux che č il mio OS abituale.
Cercherň di spiegarmi meglio :
-------------------------------------------------
|
|<-----------Qui devono apparire i dati che mi |
|                    arrivano dal server.    |
|
|                                                                        |
-------------------------------------------------
|____________________________________|<-------------Qui  invece devo avere
un prompt per
lo STDIN sempre pronto ..come un
area della shell indipendente.
Ovviamente non mi interessa l'interazione con il 'freme
superiore(chiamiamolo cosě). Quindi mi serve realizzare 2 parti della
consolle indipendenti una dedicata solo al [print "Dati in arrivo:
$sock\n" ] e l'altra dedicata in modo continuo ed esclusivo al [   $command
= <STDIN>;
print $sock "$command\n"; ]
Spero di essere stato piu chiaro ^_^. Tnx in anticipo.

Spero di essere stato piu chiaro ^_^.
Sì, ma l'ambiguità rimane: parli di due regioni dello schermo, ma si
capisce che intendi invece due processi in esecuzione parallela.
La separazione dello schermo ("lavorare su 2 aree della shell") è banale
(anche se le soluzioni non sono molto portabili); l'esecuzione in parallelo
è invece molto più problematica (E le soluzioni non sono molto portabili).
Per una stampa o l'eco di un input indirizzati in una certa regione dello
schermo, la soluzione resta nelle librerie di cui ti ho detto. In Windows,
mi orienterei su Win32::Console (ma non potrai portare l'applicazione su
Linux); oppure Term::Ansi (un pelino più portabile); o TK (portabile, ma ti
costringe ad un ambiente grafico, quindi X su Linux).
Per la questione dell'esecuzione in parallelo, invece, in Windows la
soluzione più sicura (e più incasinata) è probabilmente ricorrere a
Win32::Process. Altrimenti, puoi tentare di far funzionare il fork. In
Linux, puoi usare con molta più confidenza il fork; se no, potresti
risolvere con il citato Screen, che consente di dedicare regioni dello
schermo a programmi diversi: potresti avere al limite due programmi perl
distinti, uno che riceve i dati e un altro che li trasmette (qualcosa del
genere potrebbe funzionare anche in Windows).
Ciao.