Need help with writing a perl script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help with writing a perl script
# 22  
Old 12-01-2008
And how you want to use those messages?
Something like this?

Code:
#! /usr/bin/env perl


use warnings;
use strict;

my ($Thresholds_f, $Queue) = 
  ('/users/tibprod/scripts/EMS_Queue_List_leaiprod.ls', 
   '/users/tibprod/scripts/ShowQueues_leaiprod.sh|');
my %Thresholds_h;


open TH, '<', $Thresholds_f  or die "$Thresholds_f: $!\n";

while (<TH>) {
  tr/"//d;
  my @Fields = split /\s+/;
  $Thresholds_h{$Fields[0]} = [@Fields[1,2]];
  }

close TH;


open QUEUE, $Queue or die "$Queue: $!\n";

while (<QUEUE>) {
  next unless /\w+\s+/;
  my $Flag = 0;
  my @Fields = split /\s+/;
  while (my($Key, $Ref) = each %Thresholds_h) {
    my @Values = @$Ref;
    if ($Fields[0] =~ /^$Key$/) {
      my $Alert;
      if ($Values[0] =~ s/^"*-//) {
        if ($Fields[1] < $Values[0]) {
        $Alert++;
        print "\n$Fields[0] ...".
        "\n\n\t--> task threshold exceeded: \n\n\tcurrent status: ",
        $Fields[1], "\n\tthreshold:      -", $Values[0], "\n";
        $Flag++
          }
        }
      elsif ($Fields[1] > $Values[0]) {
        $Alert++;
        printf "\n$Fields[0] ..." unless $Flag;
        print "\n\n\t--> task threshold exceeded: \n\n\tcurrent status: ",
        $Fields[1], "\n\tthreshold:      ", $Values[0], "\n";
        $Flag++
        }
      print "\nCall the Unix team!\n\n" if $Alert;
      undef $Alert;
      if ($Values[1] =~ s/^"*-//) {
        if ($Fields[2] < $Values[1]) {
         $Alert++;
         printf "\n$Fields[0] ..." unless $Flag;
         print "\n\t--> listeners threshold exceeded: \n\n\tcurrent status: ",
        $Fields[2], "\n\tthreshold:      -", $Values[1], "\n";
        $Flag++
        }
      }
      elsif ($Fields[2] > $Values[1]) {
        $Alert++;
        printf "\n$Fields[0] ..." unless $Flag;
        print "\n\n\t--> listeners threshold exceeded: \n\n\tcurrent status: ",
        $Fields[2], "\n\tthreshold:      ", $Values[1], "\n";
      }
      print "\nCall the Application team!\n\n" if $Alert;
    }
  }
}

close QUEUE;


Last edited by radoulov; 12-01-2008 at 12:27 PM..
# 23  
Old 12-01-2008
yeah actually but I need it to be taken from the treshold file and not hardcoded as a text in the script you wrote...

thanks radoulov you are simply a saver...! Smilie
# 24  
Old 12-02-2008
With some assumptions:

Code:
#! /usr/bin/env perl


use warnings;
use strict;

my ($Thresholds_f, $Queue) = 
  ('/users/tibprod/scripts/EMS_Queue_List_leaiprod.ls', 
   '/users/tibprod/scripts/ShowQueues_leaiprod.sh|');
my %Thresholds_h;

open TH, '<', $Thresholds_f  or die "$Thresholds_f: $!\n";
  
while (<TH>) {
  tr/"//d;
  my @Fields = split /\s{3,}/;
  $Thresholds_h{$Fields[0]} = [@Fields[1..4]];
  }

close TH;  


open QUEUE, $Queue or die "$Queue: $!\n";

while (<QUEUE>) {
  next unless /\w+\s+/;
  my $Flag = 0;
  my @Fields = split /\s+/;
  while (my($Key, $Ref) = each %Thresholds_h) {
    my @Values = @$Ref;
    if ($Fields[0] =~ /^$Key$/) {
      if ($Values[0] =~ s/^"*-//) {
        if ($Fields[1] < $Values[0]) {
        print "\n$Fields[0] ...".
        "\n\n\t--> task threshold exceeded: \n\n\tcurrent status: ",
        $Fields[1], "\n\tthreshold:      -", $Values[0], "\n\n";
        defined $Values[2] and print $Values[2], "\n\n";
        $Flag++
          }
        }
      elsif ($Fields[1] > $Values[0]) {
        printf "\n$Fields[0] ..." unless $Flag;
        print "\n\n\t--> task threshold exceeded: \n\n\tcurrent status: ",
        $Fields[1], "\n\tthreshold:      ", $Values[0], "\n\n";
        defined $Values[2] and print $Values[2], "\n\n";
        $Flag++
        }        
      if ($Values[1] =~ s/^"*-//) {
        if ($Fields[2] < $Values[1]) {
         printf "\n$Fields[0] ..." unless $Flag;
         print "\n\t--> listeners threshold exceeded: \n\n\tcurrent status: ",
        $Fields[2], "\n\tthreshold:      -", $Values[1], "\n\n";
        defined $Values[3] and print $Values[3], "\n\n";
        $Flag++
        }
      }
      elsif ($Fields[2] > $Values[1]) {
        printf "\n$Fields[0] ..." unless $Flag;
        print "\n\n\t--> listeners threshold exceeded: \n\n\tcurrent status: ",
        $Fields[2], "\n\tthreshold:      ", $Values[1], "\n\n",
        defined $Values[3] and print $Values[3], "\n\n";
      }      
    }
  }
}  
  
close QUEUE;

# 25  
Old 12-02-2008
well now i'm not getting any results as an output...

i think there is a problem with the split...

Code:
  my @Fields = split /\s{3,}/;


Last edited by eliraza6; 12-02-2008 at 09:57 AM..
# 26  
Old 12-02-2008
What you have between "pl-it_prod.GW.Sync.reply.*" and "500"?
Space(s), tab(s)? How many?
# 27  
Old 12-02-2008
Try changing this:

Code:
my @Fields = split /\s{3,}/;

to:

Code:
my @Fields = split /"\s+"/;

# 28  
Old 12-02-2008
I have tabs...

now i'm getting only the second word in the text:

Code:
[root@leaiprod1 scripts]# ./temp7.pl

pl-it_prod.GW.Sync.reply.SCPROD.Upd_Soc_List ...
        --> listeners threshold exceeded:

        current status: 2
        threshold:      -10

for

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Writing xml from excel sheet .xls using perl script

Hi all. I am working on the below requirement of generating .xml file from .xls file which i have , can someone please help me or in writing the perl script for the same: The xls file format is as below which has two columns and number of rows are not fixed: Fixlet Name ... (12 Replies)
Discussion started by: omkar.jadhav
12 Replies

2. Shell Programming and Scripting

Need help in writing perl script

Hi, I am new to perl. I am trying to write a small perl script for search and replace in a file : ======================================================== #!/usr/bin/perl my $searchStr = "register_inst\.write_t\("; my $replaceStr = "model\.fc_block\."; open(FILE,"temp.sv") ||... (2 Replies)
Discussion started by: chettyravi
2 Replies

3. UNIX for Dummies Questions & Answers

Writing an HTML file in perl

I'm writing a perl script that writes an html file. use Tie::File; my ($dir) = @ARGV; open (HTML,">","$dir/file.html") || die $!; #-----Building HTML file--------------------------- print HTML "<!DOCTYPE html> <html> <head> <title>Output</title> <link... (3 Replies)
Discussion started by: jrymer
3 Replies

4. Shell Programming and Scripting

Perl script for Calling a function and writing all its contents to a file

I have a function which does awk proceessing sub mergeDescription { system (q@awk -F'~' ' NR == FNR { A = $1 B = $2 C = $0 next } { n = split ( C, V, "~" ) if... (3 Replies)
Discussion started by: crypto87
3 Replies

5. Programming

REQUIRE HELP IN WRITING A PERL SCRIPT

Hi everyone I am a beginner in perl and I am trying to write a perl script. Basically I want to separate gene entries from phenotype entries in a text file which contains huge number of records and copy them in a separate file. The gene entries will have * symbol after the line FIELD TI. A... (7 Replies)
Discussion started by: kaav06
7 Replies

6. Shell Programming and Scripting

Writing a Perl Script that processes multiple files

I want to write a Perl script that manipulates multiple files. In the directory, I have files 250.*chr$.ped where * is from 1 to 1000 and $ is from 1-22 for a total of 22 x 10,000 = 22,000 files. I want to write a script that only manipulates files 250.1chr*.ped where * is from 1 to 22.... (10 Replies)
Discussion started by: evelibertine
10 Replies

7. UNIX for Dummies Questions & Answers

help in writing perl module

Hi i have written a perl script which was then converted to perl module by me. it works as expected. but i have to put it on many servers so i want to build a package for it. i dont know how to do that. just to check i copied perl module in "lib" directory which is working. ( directly copied... (1 Reply)
Discussion started by: zedex
1 Replies

8. Shell Programming and Scripting

help for a perl script - writing to a data file

Hi, Here is my problem.. i have 2 files (file1, file2).. i have wrote the last two lines and first 4 lines of "file2" into two different variables .. say.. my $firstrec = `head -4 $file2`; my $lastrec = `tail -2 $file2`; and i write the rest of the file2 to a tmpfile and cat it with head... (2 Replies)
Discussion started by: meghana
2 Replies

9. UNIX for Dummies Questions & Answers

Perl Unix Script Writing

Hi Folks, I posted a few days ago, thanks for the responses. My original question was for renaming files of sort 3p2325294.dgn in a directory containing multiple files. I need to drop the first 2 characters and the last in a unix script using Perl. How does it differ from using the Unix... (1 Reply)
Discussion started by: Dinkster
1 Replies

10. Shell Programming and Scripting

Writing perl module

Hi, I'd like to create perl functions in separate file from my scripts. Does somebody know if it's possible to create and use a perl module without compiling it ? Thanks. (4 Replies)
Discussion started by: jo_aze
4 Replies
Login or Register to Ask a Question