Noah wrote:
Hi,

Hello,

thank you again list members for the quick response to my last question.

I am using the I am trying to figure out to pass my $exp to the
subroutine "grabConfig".  $exp is the variable of my expect object.
line 167 is "$patidx = $exp->expect($timeout, [$prompt]); "


here is the error message:

"                   Please Enter Selection: > Can't call method "expect"
on an undefined value at ./get.config.pl line 167."

here are snippets from my code:

---- snip ---

                    # send element number
                    while ($elementCount < $elementUpperLimit) {

                        $prompt = "$blah";
                        $exp->send("$elementCount");

perldoc -q "What.s wrong with always quoting ..vars.?"

                          $prompt = $blah;
                          $exp->send( $elementCount );

                        &grabConfig;

                          grabConfig();

perldoc perlsub

                        $elementCount++;
                    }


sub grabConfig {
    $prompt = "[EMAIL PROTECTED]>";

      my $prompt = qr/[EMAIL PROTECTED]>/;

    $patidx = $exp->expect($timeout, [$prompt]);  <<<<<< line 169

According to the documentation:

<QUOTE>
$object->expect($timeout, @match_patterns)
</QUOTE>

The second argument to expect() should not be an array reference.

http://search.cpan.org/~rgiersig/Expect-1.21/Expect.pod

    $read = $exp->before();

    #get hostname
    $read =~ /^@([^>]+)>\s/;
    $hostname = $1;

You should not use the numerical variables unless the match was successful:

      $read =~ /^@([^>]+)>\s/ and $hostname = $1;

Or:

      ( $hostname ) = $read =~ /^@([^>]+)>\s/;

    $hostname = tr/[a-z]/[A-Z]/;

Why are you translating '[' to '[' and ']' to ']'?

      $hostname = tr/a-z/A-Z/;

Or:

      $read =~ /^@([^>]+)>\s/ and $hostname = uc $1;

    $outputFilename = "$hostname.config.txt";

    #delete saved configuraiton file
    unlink ($outputFilename);

You should verify that unlink worked correctly:

      unlink $outputFilename or warn "Cannot unlink '$outputFilename' $!";

But you don't really need to unlink the file as you are opening it read-only which will remove the previous contents upon opening.

    # open new configuration file
    open (OUTPUT, ">$outputFilename");

You should *always* verify that the file opened correctly:

open OUTPUT, '>', $outputFilename or die "Cannot open '$outputFilename' $!";



John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order.                            -- Larry Wall

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to