Results 1 to 2 of 2

Thread: Search Pattern And Arrays

  1. #1
    Junior Member
    Join Date
    Jan 2008
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    0

    Default Search Pattern And Arrays

    Code:
    #!/usr/bin/perl
    
    #use strict;
    use warnings;
    
      sub search_pattern
          {
    
              my $file_name = $_[0];
    
              my $search = $_[1];
    
              open(LOGFILE, $_[0]) or die("Error: cannot open file '$_[0]'\n");
    
              while (<LOGFILE>)
                    {
    
    
    if ( $_ =~ /$search/ ) {
    
    my $val = $`;  #Matches Everything after pattern
    
    $val =~ s/^\s+//; #remove leading spaces
    $val =~ s/\s+$//; #remove trailing spaces
    $val =~ s/\D//g;  #Just has the digits. All other charcters are filtered.
    
    #print "$val\n";
    print "\nFirst Occurence:$val \n";
    
    my $line = $.;
    print "Line number:$line\n";
    
    #$temp = $line;
    #print "$temp";
    #print "$.";
    
    last;
    }
    }
    }
    
    my $file_n ="test.txt";
    
    my $search_p = "This is phrase 2";
    &search_pattern($file_n, $search_p);
    OUTPUT
    ------

    First Occurence:90
    Line number:3

    Hi guys,

    My code above searches for the first occurence of a phrase and returns the line number...

    What if i wanna search for multiple search phrases in a single file and return the line numbers.

    For example:
    test.txt

    1.This is phrase 1
    2.This is phrase 3
    3.This is phrase 2
    4.This is phrase 3

    any text in between

    5.This is phrase 5

    any text in between

    6.This is phrase 4
    7.This is phrase 1
    8.This is phrase 2

    9.This is phrase 3
    10.This is phrase 6
    11.This is phrase 7
    12.This is phrase 1
    13.This is phrase 2
    14.This is phrase 3
    15.This is phrase 4
    16.This is phrase 8
    17.This is phrase 1

    .................
    .................

    i have given the line numbers for my reference in reality, it is not present...

    The arguments passed are file_name and Search phrases (for eg: this is phrase1, this is phrase 2, This Phrase 3, phrase 5...)

    The number of arguments passed may vary... But the first argument is always the file_name.

    first it will check for phrase 1 and then from that line number phrase 2 (even though in our case Phrase 3 come in between phrase 2 ie., line 2 we need phrase 2 first and then phrase 3) and then phrase 3 and return phrase 3.

    lets say we have 4 arguments including file name...

    if (phrase 1 exists) ---------- if (phrase 1 doesnt exists)

    from that line number ----------- search for phrase 2

    search for phrase 2 ---------- if (phrase 2 also doesnt exists)

    from that line number ---------- search for phrase 2 and return phrase 3

    ---------if (phrase 3 also doesnt exists)

    ----------- return phrase 2

    ----------- else phrase 1

    search for phrase 3 ----------- if none of them exists display a message

    return the phrase 3


    the reason iam keeping track of line number is so that the file is not parsed from line 1.

    if i know the number of arguments passed then its fine...

    But the thing is what if i dont know the number of arguments presents.

    can anybody suggest how do i proceed for this problem.

  2. #2
    Member
    Join Date
    Feb 2008
    Posts
    68
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Rep Power
    7

    Default

    Code:
    #!/usr/bin/perl
    
    #use strict;
    use warnings;
    
    sub search_pattern
    {
        my ($file_name, @search) = @_;
        open(LOGFILE, $_[0]) or die("Error: cannot open file '$_[0]'\n");
        while (<LOGFILE>) {
            foreach $pattern (@search) {
            if ( $_ =~ /$search/ ) {
    Is this what you want ?
    Last edited by agn; 12th February 2008 at 11:13 AM.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. word search in file
    By chandanperl in forum Coding in General
    Replies: 2
    Last Post: 11th March 2008, 10:16 AM
  2. pattern search with numbers
    By mercuryshipz in forum Coding in General
    Replies: 0
    Last Post: 14th February 2008, 11:16 PM
  3. How to use arrays and its values present in one script?
    By Nishanthhampali in forum Shell scripting
    Replies: 0
    Last Post: 31st January 2008, 02:04 PM
  4. diff command to exclude files that match pattern
    By piggy in forum Getting started tutorials
    Replies: 1
    Last Post: 13th August 2007, 10:52 PM
  5. Replies: 2
    Last Post: 7th June 2005, 10:22 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •