GNT sans publicité, site mobile, fonctionnalitées exclusives...

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.
Lire les 2 réponses

Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stephane CHAZELAS
Le #21514062
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;

my $socket = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "10.0.0.5",
PeerPort => 10000);

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 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


$/ = "r";

voir perldoc perlvar

--
Stéphane
Paul Gaborit
Le #21514312
À (at) Wed, 7 Apr 2010 16:31:35 +0000 (UTC),
Stephane CHAZELAS
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;

my $socket = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "10.0.0.5",
PeerPort => 10000);

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 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


$/ = "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 - Perl en français -
Publicité
Suivre les réponses
Poster une réponse
Anonyme