Problème de fin de ligne sans
Le
Thierry
Bonsoir,J'ai un script basé en gros sur celui-ci:#!/usr/bin/perl
use strict;use warnings;
use IO::Socket;
my $socket = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "10.0.0.5",
PeerPort => 10000);
print "*** Debut de connexion ***";
while(my $reponse=<$socket>){
print "Le serveur a dit : $reponse";
print $socket "Au revoir SERVEUR!!!";
}
print "*** Fin de connexion ***";
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.
use strict;use warnings;
use IO::Socket;
my $socket = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "10.0.0.5",
PeerPort => 10000);
print "*** Debut de connexion ***";
while(my $reponse=<$socket>){
print "Le serveur a dit : $reponse";
print $socket "Au revoir SERVEUR!!!";
}
print "*** Fin de connexion ***";
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.

Poser une question


$/ = "r";
voir perldoc perlvar
--
Stéphane
Stephane CHAZELAS
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 - Perl en français -