Hi,

I have the script below which outputs some values in a "tabular" form into
the body of a mail. I'm using the format utility in PERL to output the
values in a tabular form as in:

PROG NO VERSION PROTOCOL        PORT    SERVICE RESPONSE
----------------------------------------------------------------------------
----------------------------------------------------------------------------
-----
10666567        1.1             tcp             5676    walld
10666567 program is not available. 

However, it produced the errors below:
[EMAIL PROTECTED] file-5.pl names
Format not terminated at file-5.pl line 97, at end of line
Format not terminated at file-5.pl line 97, at end of line
Missing right bracket at file-5.pl line 97, at end of line
syntax error at file-5.pl line 97, at EOF
Execution of file-5.pl aborted due to compilation errors.

Below is my script which reads the file containing the output of the rpcinfo
UNIX utility, as in:
program         vers    proto   port    service  response
100008          1       udp     55734   walld     program 100008 version 1
ready and waiting
1073741824      1       udp     661             program 1073741824 version 1
is not available
1073741825      1       udp     899             program 1073741825 version 1
is not available

and mails to sys-admins whenever the program response is NOT "ready and
waiting". The problem scenario is similar my earlier posting. However, I'm
now wanting to include the formatting utility in PERL to better format my
outputs. 

Below is my script which produced the ERROR output above:

open(INPUT, "$file") || die "Can't open $file \n";
open(NAMES, "$nameList") || die "Can't open $nameList \n";
@names=<NAMES>;
$list="";
for($i=0;$i<@names;$i++){
   chomp($names[$i]);
   print "\$names[$i]=$names[$i] \n";
   $list=$list." "."$names[$i]".$domain;
}
my @data = grep{/^\d/ && !/(ready and waiting)$/ && !/^RPC/ && !/^program/}
map {chomp; $_}$
if(@data==0){
    print "No error rows found\n";
    exit 1;   
} 
else{
        print MAIL "SUBJECT: RPCPING OUTPUT \n";
         print MAIL "HOST     :$hostName\n";
         print MAIL "IP :$ip\n";
         print MAIL "OS :$^O \n";
   foreach(@data){
            print "ELEMENTS: $_ \n";
            my @field=split(/:?\s+/,$_,6);   ##break it up into 6 fields
      
            format STDOUT_TOP =
            MAIL
            PROG NO   VERSION   PROTO   PORT   SERVICE   RESPONSE
 
----------------------------------------------------------------------------
----------------------------------
            .         
            shift @field unless $field[0];
            $progNo = $field[0];
            $version = $field[1];
            $protocol = $field[2];
            $port = $field[3];   
            $service = $field[4];
            $response =$field[5];
            
        write();

        format STDOUT =
            @<<<< @#.######   @<<<<<<   @<<<<<<   @#.######   @<<<<<<
@<<<<<<<<<<<<<<<<<<<<
            $progNo, $version, $protocol, $port, $service, $response
            .
   }
}
close(MAIL);

Could anyone help me out by showing me where did I go wrong and how do I
resolve it? I'm still new in using the format utilty.

PS: Kindly excuse me as I'm not practicing good perl programming practices
by doing a "use strict" and having my variables defined as my or local. My
priority is get a working model of this script.

Thanks

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to