http://qs1969.pair.com?node_id=1054065

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

hi monks, after executing this code the output dumped in out1.log should be read line by line (complete line) and i have to do the pattern match with that and i have to pick the lines which i require but it is not working plz help me out what changes are to be done....

#!/usr/local/bin/perl use Net::Telnet; open ($inputlog, ">out1.log"); $host = "xxx"; $port = "xxxx"; $box = new Net::Telnet(Timeout=>20, Errmode=>'die'); $box->open( Host => $host, Port => $port, ); $box->input_log($inputlog); $box->cmd("i"); $box->close; open(OUTFILE,">out2.txt"); for($i=26;$i<=40;$i++) { my @array = `awk 'NR==$i' out1.log`; foreach(@array) { if($_ =~ m/^\d+\. .*/ig ) { print OUTFILE ("$&\n"); } } }

Replies are listed 'Best First'.
Re: use of telnet in perl
by hippo (Bishop) on Sep 14, 2013 at 17:33 UTC

    This:

    for($i=26;$i<=40;$i++) { my @array = `awk 'NR==$i' out1.log`;

    is very inefficient. Why would you shell out 15 separate times just to retrieve one line of input each time? Why do you then run a foreach on an array which by definition will have only one element? There doesn't seem much logic to this, TBH.

    Ignore the telnet part while fixing the post-processing. Just save one instance of out1.log and run your post-processing on that until it works. If you still have problems, come back here with sample input, sample output and desired output and then we might be able to offer some further advice.

    Good luck

Re: use of telnet in perl
by Laurent_R (Canon) on Sep 14, 2013 at 08:08 UTC

    but it is not working

    Please explain what is not working: do you get any output, is output different from what you wish, or what?

    It would also be good to get a sample of your input file.