Output is as follows : (note: test.perl is just a small test program to do just the telnet and getline ... I don't really name my programs test.perl ... :)
[friz@dhcp9-52 friz]$ ./test.perl | more ---- start line ---- sec log sho ---- end line ---- ---- start line ---- UserName Application Authentication Method Profile Name ---- end line ---- ---- start line ---- --------------------- ----------- --------------------- -------------------- ---- end line ---- ---- start line ---- myuser console password admin ---- end line ---- ---- start line ---- myuser http password admin ---- end line ---- ---- start line ---- myuser telnet password admin ---- end line ---- It appears that the line shows up correctly here which is why I think there's a CR somewhere... On Wed, 2003-01-08 at 14:42, Dan Muey wrote: > Perhaps that data contains '<<<<<' in it already? > > Try > print "--->>>>$line\<<<<---\n"; > Just in case it's seeing it as a varaible named 'line<..' > That could cause all sorts of screwy ness > > For kicks what does it ouput if you do : > > print "\n---- start line ---- \n $line \n---- end line ---- \n"; > > > Dan > > -----Original Message----- > From: Jason Frisvold [mailto:[EMAIL PROTECTED]] > Sent: Wednesday, January 08, 2003 1:39 PM > To: Perl Beginners List > Subject: "hidden" characters in an input stream > > > Hi all, > > I'm using the Net::Telnet module to automate some of the more menial tasks I >have to deal with every so often. Part of the task requires parsing a stream of data >from the device I'm telnetting to (A Marconi ASX-200 to be exact) ... I've >successfully set up the telnet, logged in, and executed the proper commands. Now, >however, I need to retrieve data from the device. I can submit the command and use >getline() to retrieve lines, one at a time, and parse it. However, there are >"hidden" characters here and I don't know how to determine what they are. > > Here is a quick snippet of the code : > > $Telnet->print("sec log sho"); > while (my $line = $Telnet->getline(Timeout => 5,)) { > chomp $line; > print "--->>>>$line<<<<---\n"; > } > > This should simple print out each line with the arrows before and after the line. >However, upon output, I get something like the following : > > --->>>> sec log sho<<<<--- > UserName Application Authentication Method Profile > Name<<<<--- > --------------------- ----------- --------------------- > --------------------<<<<--- > myuser console password admin<<<<--- > myuser http password admin<<<<--- > myuser telnet password admin<<<<--- > > > I'm guessing this is a carriage return character? I believe that's the one that >causes the output to start at the beginning of the line. > > Does anyone know how I can properly remove these characters so I can parse this >information? > > In addition, is using the timeout on getline the "proper" way to determine that the >input stream has stopped? > > Thanks, -- --------------------------- Jason H. Frisvold Backbone Engineer Penteledata Engineering [EMAIL PROTECTED] RedHat Certified - RHCE # 807302349405893 --------------------------- "Something mysterious is formed, born in the silent void. Waiting alone and unmoving, it is at once still and yet in constant motion. It is the source of all programs. I do not know its name, so I will call it the Tao of Programming."
signature.asc
Description: This is a digitally signed message part