print "*** Debut de connexion ***\n";
while(my $reponse=<$socket>){
print "Le serveur a dit : $reponse";
print $socket "Au revoir SERVEUR!!!\n";
}
print "*** Fin de connexion ***\n";
il se connecte au serveur d'un système distant qui lui renvoi des infos sous
forme de lignes ASCII.Mon problème est que ces lignes ne sont pas terminées
par un <CR><LF>, mais juste par un <CR>.Le script ne "voit" donc pas les
fins de ligne.Quelqu'un aurait-il une idée pour remédier à ce problème avant
que je sois obligé de modifier le système distant pour qu'il insert un <LF>
après chaque <CR> ?Merci.PS: Le client est sur une machine sous Linux.
print "*** Debut de connexion ***n"; while(my $reponse=<$socket>){ print "Le serveur a dit : $reponse"; print $socket "Au revoir SERVEUR!!!n"; } print "*** Fin de connexion ***n"; il se connecte au serveur d'un système distant qui lui renvoi des infos sous forme de lignes ASCII.Mon problème est que ces lignes ne sont pas terminées par un <CR><LF>, mais juste par un <CR>.Le script ne "voit" donc pas les fins de ligne.Quelqu'un aurait-il une idée pour remédier à ce problème avant que je sois obligé de modifier le système distant pour qu'il insert un <LF> après chaque <CR> ?Merci.PS: Le client est sur une machine sous Linux.
$/ = "r";
voir perldoc perlvar
-- Stéphane
2010-04-6, 23:55(+02), Thierry:
Bonsoir,J'ai un script basé en gros sur celui-ci:#!/usr/bin/perl
use strict;use warnings;
use IO::Socket;
print "*** Debut de connexion ***n";
while(my $reponse=<$socket>){
print "Le serveur a dit : $reponse";
print $socket "Au revoir SERVEUR!!!n";
}
print "*** Fin de connexion ***n";
il se connecte au serveur d'un système distant qui lui renvoi des infos sous
forme de lignes ASCII.Mon problème est que ces lignes ne sont pas terminées
par un <CR><LF>, mais juste par un <CR>.Le script ne "voit" donc pas les
fins de ligne.Quelqu'un aurait-il une idée pour remédier à ce problème avant
que je sois obligé de modifier le système distant pour qu'il insert un <LF>
après chaque <CR> ?Merci.PS: Le client est sur une machine sous Linux.
print "*** Debut de connexion ***n"; while(my $reponse=<$socket>){ print "Le serveur a dit : $reponse"; print $socket "Au revoir SERVEUR!!!n"; } print "*** Fin de connexion ***n"; il se connecte au serveur d'un système distant qui lui renvoi des infos sous forme de lignes ASCII.Mon problème est que ces lignes ne sont pas terminées par un <CR><LF>, mais juste par un <CR>.Le script ne "voit" donc pas les fins de ligne.Quelqu'un aurait-il une idée pour remédier à ce problème avant que je sois obligé de modifier le système distant pour qu'il insert un <LF> après chaque <CR> ?Merci.PS: Le client est sur une machine sous Linux.
print "*** Debut de connexion ***n"; while(my $reponse=<$socket>){ print "Le serveur a dit : $reponse"; print $socket "Au revoir SERVEUR!!!n"; } print "*** Fin de connexion ***n"; il se connecte au serveur d'un système distant qui lui renvoi des infos sous forme de lignes ASCII.Mon problème est que ces lignes ne sont pas terminées par un <CR><LF>, mais juste par un <CR>.Le script ne "voit" donc pas les fins de ligne.Quelqu'un aurait-il une idée pour remédier à ce problème avant que je sois obligé de modifier le système distant pour qu'il insert un <LF> après chaque <CR> ?Merci.PS: Le client est sur une machine sous Linux.
$/ = "r";
voir perldoc perlvar
Oui.
Pour éviter d'utiliser la variable $/, on peut passer par la couche IO :
$socket->input_record_separator("r");
Ainsi, seul le comportement de $socket est influencé. Sinon, il faut penser à 'local'iser la variable $/ pour éviter les effets de bord...
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
print "*** Debut de connexion ***n";
while(my $reponse=<$socket>){
print "Le serveur a dit : $reponse";
print $socket "Au revoir SERVEUR!!!n";
}
print "*** Fin de connexion ***n";
il se connecte au serveur d'un système distant qui lui renvoi des infos sous
forme de lignes ASCII.Mon problème est que ces lignes ne sont pas terminées
par un <CR><LF>, mais juste par un <CR>.Le script ne "voit" donc pas les
fins de ligne.Quelqu'un aurait-il une idée pour remédier à ce problème avant
que je sois obligé de modifier le système distant pour qu'il insert un <LF>
après chaque <CR> ?Merci.PS: Le client est sur une machine sous Linux.
$/ = "r";
voir perldoc perlvar
Oui.
Pour éviter d'utiliser la variable $/, on peut passer par la couche IO :
$socket->input_record_separator("r");
Ainsi, seul le comportement de $socket est influencé. Sinon, il faut
penser à 'local'iser la variable $/ pour éviter les effets de bord...
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
print "*** Debut de connexion ***n"; while(my $reponse=<$socket>){ print "Le serveur a dit : $reponse"; print $socket "Au revoir SERVEUR!!!n"; } print "*** Fin de connexion ***n"; il se connecte au serveur d'un système distant qui lui renvoi des infos sous forme de lignes ASCII.Mon problème est que ces lignes ne sont pas terminées par un <CR><LF>, mais juste par un <CR>.Le script ne "voit" donc pas les fins de ligne.Quelqu'un aurait-il une idée pour remédier à ce problème avant que je sois obligé de modifier le système distant pour qu'il insert un <LF> après chaque <CR> ?Merci.PS: Le client est sur une machine sous Linux.
$/ = "r";
voir perldoc perlvar
Oui.
Pour éviter d'utiliser la variable $/, on peut passer par la couche IO :
$socket->input_record_separator("r");
Ainsi, seul le comportement de $socket est influencé. Sinon, il faut penser à 'local'iser la variable $/ pour éviter les effets de bord...
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>