On 12/8/09 Tue  Dec 8, 2009  5:41 PM, "Noah" <noah-l...@enabled.com>
scribbled:

> 
> Hi there List people,
> 
> I am hoping to send a hash and a scalar to a subroutine but the variable
> is not completely being sent.  Below is the error message below is
> showing something is not getting passed that well to the subroutine.
> Looks like %login is empty.

If %login were "empty", then the line $login{$hostname}->send("exit"); would
result in a different error: Can't call method "send" on an undefined value.

It is more likely that one or all of $position, $error, $matched, $before,
or $after are assigned an undefined value by the call to
$login{$hostname}->send("exit"), perhaps because of an error. Does that
method have any error checking or error return value?

> 
> $ret{$hostnames[0]} = $login{$hostnames[0]}->send_cmd("edit");
> $ret{$hostnames[1]} = $login{$hostnames[1]}->send_cmd("edit");
> 
> if ($ret{$hostnames[0]} =~ /^blah/m) {
>      exiting ($hostnames[0], %login);
> }
> 
> if ($ret{$hostnames[1]} =~ /^blah/m) {
>      exiting ($hostnames[1], %login);
> }
> 
> 
> sub exiting {
>      my ($hostname, %login) = @_;
>      my ($ret);
>      print "login:  $login $hostname\n";
>      my ( $position, $error, $matched, $before, $after ) =
> $login{$hostname} -> send("exit\n");
>      print "position: $position, $error, $matched, $before, $after \n";
>      exit 0;

You do realize that the following lines will not be executed, don't you?

>      if ($ret{$hostname} =~ /^blah/m) {
>          $login{$hostname}->send_cmd("yes")
>      }
>      $ret{$hostname} = $login{$hostname}->send_cmd("exit");
> }

Use the Data::Dumper module to inspect the contents of %login:

use Data::Dumper;
...

print Dumper(\%login);



-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to