choedebeck has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to make a simple GUI in Perl/Tk that will automate some tasks I have to perform on remote servers. I am using Net::SSH::Perl to connect to these machines and getting the username and password from GUI Entry fields.

The problem is with the password. When I type the password into the entry field and send it off to Net::SSH::Perl I get an error. If I hard code the password as a string in the code everything works find. I have verified that the password is exactly the same each time.

The only thing I can think of is that for some reason the string I get from the GUI is in some kind of different format that the string I hard code. Can anyone support this theory? If so is there some way I can get the string I get from the GUI in the correct format?

Replies are listed 'Best First'.
Re: String format question
by Roy Johnson (Monsignor) on Nov 30, 2005 at 20:16 UTC
    If your code is short enough, include it in your post (within <code></code> tags). If it's not short enough, strip out the stuff that doesn't relate to the problem and post the stripped code. We have to be able to see what's going on.

    If you have a string that you know works, put code like

    if ($string_from_gui ne 'this is the string that works') { die "$string is not the same string!\n"; }
    just before you do whatever fails. If it doesn't die there when you test it, you have evil gnomes.

    Caution: Contents may have been coded under pressure.
      the following code works warning untested
      use Net::SSH::Perl; my $ssh = Net::SSH::Perl->new("myhost", debug => 1, protocol => 2); $ssh->login("myUser", "myPassword"); my ($out, $error) = $ssh->cmd("pwd"); print $out . "\n";
      This code produces the error, "input must be 8 bytes long at /usr/lib/perl5/site_perl/5.8/cygwin/Crypt/DES.pm line 57"
      use Tk; use Net::SSH::Perl; my $username; my $password; my $mw = MainWindow->new(); my $entry1 = $mw->Entry(-textvariable => \$username)->pack(); my $entry2 = $mw->Entry(-textvariable => \$password)->pack(); my $button = $mw->Button( -command => sub { my $ssh = Net::SSH::Perl->new("myhost", debug => 1, protocol => +2); $ssh->login($username, $password); my ($out, $error) = $ssh->cmd("pwd"); print $out . "\n"; } )->pack(); MainLoop;