Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^2: Expecting more from expect

by bret.foreman (Acolyte)
on Jul 08, 2004 at 16:33 UTC ( [id://372852]=note: print w/replies, xml ) Need Help??


in reply to Re: Expecting more from expect
in thread Expecting more from expect

Hmmm. Maybe this is a bug in my version of PERL (v5.6.1 on Linux). I made the following test program called "test.pl":
#!/usr/bin/perl use strict; use Expect; my $object = Expect->spawn( "bash" ) or die "Could not spawn bash shell.\n"; $object->log_stdout(0); $object->max_accum( 128 * 512 ); my $header = "Test Log Header"; $object->send( "cat test_log.txt\n" ); my ($matched_pattern_position, $error, $successfully_matching_string, $before_match, $after_match) =$object->expect( 5 , -re => $header ); if( $error ne undef ) { die "Could not find header.\n"; } my @rows = split /^/ , $after_match; printf "Found %d lines after match in file.\n", scalar( @rows );
And created the file "test_log.txt" that looks something like this:
Test Log Header 040702003113 21% 1175 1859 8239 8744 2221 0 0 4 100% 7% T 6% 040702003113 21% 1175 1859 8239 8744 2221 0 0 4 100% 7% T 6% 040702003113 21% 1175 1859 8239 8744 2221 0 0 4 100% 7% T 6% 040702003113 21% 1175 1859 8239 8744 2221 0 0 4 100% 7% T 6% 040702003113 21% 1175 1859 8239 8744 2221 0 0 4 100% 7% T 6% ...for 160 lines...
Then see the following:
Output of "wc test_log.txt": 161 2243 9776 test_log.txt Ouput of "test.pl": Found 34 lines after match in file.
So there's no ssh or any other complication, just the basic expect buffer of a cat result. Can someone else try this and confirm that it works as expected on their system?

Thanks,

Bret

Replies are listed 'Best First'.
Re^3: Expecting more from expect
by TilRMan (Friar) on Jul 08, 2004 at 23:19 UTC

    My apologies -- I read the OP too hastily.

    Again, will scp do the trick?

    You are trying to use the $after_match to grab everything after a match. This is not the way Expect works. It will only read what it needs in order to match the pattern you specified. You need to match the end of the file and then take everything before the end.

    #untested my $prompt = "my_unique_custom_prompt_aint_it_neat>"; $object->send("export PS1=$prompt\r"); $object->expect(10, $prompt); $object->send("cat file.txt\r"); $object->expect(10, $header); $object->expect(120, $prompt); my $contents = $object->before();

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://372852]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2024-04-21 11:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found