Welcome to the Monastery | |
PerlMonks |
Re: Net::Telnet, cmd, and sedby belden (Friar) |
on Jun 27, 2003 at 21:04 UTC ( [id://269739]=note: print w/replies, xml ) | Need Help?? |
I'd guess that the problem is that you need to add an extra pair of \ to your sed command in order to escape SUBJECT properly:
As is, "\$SUBJECT" will send "$SUBJECT" to the shell that you're talking to; that shell will try to expand $SUBJECT. Since this is actually text within the file you're munging, you need to make the shell see \$SUBJECT. (I'm guessing here but this seems about right.) Another way of doing it would be to cut sed out of the loop altogether:
If that doesn't fix it, then the problem might not be the shell interpreting SUBJECT - perhaps the .vacation.msg file you're looking at has a sequence of characters in it that match your Net::Telnet object's prompt() string. You may need to try briefly undefining prompt() within your object, do your cat/sed/whatever, then re-define prompt().
Gosh, I'm just full of ideas. In some places, your code refers to $$telnet, and in others, it refers to $telnet. This might be causing your cmd() some grief. Try tossing a 'use strict; use warnings;' at the top of your code to see what complains :) When automating Net::Telnet connections to other machines, I've found that I can get away with a very limited range of commands at the remote machine, particularly for file manipulations such as the one you're doing. /bin/echo and /bin/ls can be used to check whether files and directories exist; /bin/cat returns file contents to your program, so you can do whatever complex greps and seds on them using Perl's regexes.
Good luck on your project, sounds like a fun one. blymansetenv EXINIT 'set noai ts=2'
In Section
Seekers of Perl Wisdom
|
|