Whats wrong with my Loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Whats wrong with my Loop
# 1  
Old 08-25-2010
Whats wrong with my Loop

Hi all,
I have been given a task to search for strings in a file that is encoded. I need to display the file name only when all the 3 strings which i provide are present in the file name.

i first try to get a list of files according from the directory according to the value passed in argument 1. For each file in the list i then try to search for a strings in the file

Code:
use Time::localtime;
use POSIX qw/strftime/;
use File::Find;
use File::stat;
use IO::Handle;
use File::copy;
use Unicode::String ;
use Cwd;
use Encode;
use PerlIO::encoding;

Unicode::String->stringify_as( 'utf8' );
sub trim($);


$dir = "C:\\Temp\\t\\";


($File_pattern,$search_pattern,$search_pattern2,$search_pattern3) = @ARGV;
$SRC_FLG1=0;
$SRC_FLG2=0;
$SRC_FLG3=0;
#print $search_pattern2;
print "Searching $search_pattern,$search_pattern2,$search_pattern3 in $dir......\n";


$search_pattern = trim($search_pattern);

$search_pattern2= trim($search_pattern2);

$search_pattern3= trim($search_pattern3);

sub trim($)
{
  my $string = shift;
  $string =~ s/^\s+//;
  $string =~ s/\s+$//;
  return $string;
}




opendir ( DIR, $dir ) || die "Error in opening dir $dirname\n";
find (\&Search, "$dir");

sub Search {
if ((/\.msg$/) && (/$File_pattern/) )
               {
                print $_;

                foreach $x ($_) {
                my $filename = $x;
                print "\n--------------------------------------------------\n";
                open(my $in, '<:raw', $filename) || die "Couldn't open file: $!";
                 my $text = do { local $/; <$in> };
                close $in;
                my $content = decode('UTF-16LE', $text);

                      foreach $line ($content)
                                              {  print "search $search_pattern in $content";
                                                 if ($line =~ (m/$search_pattern/gi))
                                                      {
                                                        print "\nYes1";
                                                        $SRC_FLG1=1;
                                                      }

                                                                        print "search $search_pattern2 in $content";
                                                  if ($line =~ (m/$search_pattern2/gi))
                                                        {
                                                         print "\nYes2";
                                                        }
                                               print "search $search_pattern3 in $content";
                                                                        if ($line =~ (m/$search_pattern3/gi))
                                                         {
                                                          print "\nYes3";
                                                          $SRC_FLG3=1;
                                                         }

                                  if ($SRC_FLG1==1 && $SRC_FLG2==1 && $SRC_FLG3==1)
                                        {
                                         print "File found : $filename\n";
                                        }

                      print $SRC_FLG1,$SRC_FLG2,$SRC_FLG3;
                      $SRC_FLG1=0;
                      $SRC_FLG2=0;
                      $SRC_FLG3=0;

                                            }


                                }

                  }








print "\n--------------------------------------------------\n";

closedir(DIR);
chdir("..");

- The strange thing is that it never goes into the loop
Code:
if ($line =~ (m/$search_pattern2/gi))

if i replace loop for search_pattern3 and put it before search_pattern2 then the code does not go into search_pattern3. So it is always the second loop. i have tried to enter same values for string1,string2,string3 but still it does not matches.
Could someone help.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Whats wrong with this If statement?

Hi I am pretty new to bash scripting.I am trying to write the if statement in bash and it give me error. Can you please help me what I am doing wrong in If statement? if && && then fector=$kk; divide=$DB_SIZE/$kk; echo "factor value:$fector" echo"divide value:$divide"... (1 Reply)
Discussion started by: Gevni
1 Replies

2. Programming

Whats wrong with this If statement?

Hi I am pretty new to bash scripting.I am trying to write the if statement in bash and it give me error. Can you please help me what I am doing wrong in If statement? Code: if && && then fector=$kk; divide=$DB_SIZE/$kk; echo "factor value:$fector" echo"divide... (1 Reply)
Discussion started by: Gevni
1 Replies

3. Shell Programming and Scripting

Sh Script whats wrong?

Hi there, i have a problem i have created followning sh files some years ago but now it dosen`t work anymore i never used it a long time. Can anyone find the Error? Its always runs the stop() block and trying to Killing the Server also if i try to start or creat a new one. #!/bin/sh stop()... (6 Replies)
Discussion started by: NewCannon
6 Replies

4. UNIX for Dummies Questions & Answers

Whats wrong with this if-else

hi whats wrong in below?? CHECK=M10; if ; then echo "hello hi"; else echo "how are u hello hi"; fi I am getting error as ./test.sh: line 2: ' ./test.sh: line 2: M10: command not found ./test.sh: line 2: M10: command not found ./test.sh: line 2: M10: command not found (8 Replies)
Discussion started by: skyineyes
8 Replies

5. Homework & Coursework Questions

Whats wrong with the following

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: ls -ld htdocs drwxr-x--- 3 root root 8192 2006-11-19 10:41 htdocs How would a host administrator... (1 Reply)
Discussion started by: Larry_1
1 Replies

6. UNIX for Dummies Questions & Answers

whats wrong with this?

can anyone tell me why this code doesn't work how its supposed to, its the hangman game but it doesn't play how its supposed to #!/bin/bash NoAttempts="0" livesgiven="5" LivesRemain=$livesgiven LettersAttempted="" wordfile=words numwords=0 function menu() { clear cat << menu... (1 Reply)
Discussion started by: ferrycorsten73
1 Replies

7. Shell Programming and Scripting

Whats wrong with this IF condition?

I have four variables, dumpdata, defndata, compare1 and compare2 I want an IF statement condition which returns true when either dumpdata=defndata or (dumpdata<=compare1 and dumpdata>=compare2). But this is not working for me.. if (4 Replies)
Discussion started by: indianjassi
4 Replies

8. Shell Programming and Scripting

tell me whats wrong with this

#! /bin/bash USAGE=" | ] if then echo "$USAGE" exit 1 fi while getopts lb: OPTION do case $(OPTION)in a) echo Hi there! exit 2;; b) echo hello o) OARG=$OPTARG;; \?)echo "$USAGE" ;; exit 2;; esac done shift `expr... (1 Reply)
Discussion started by: nadman123
1 Replies

9. Shell Programming and Scripting

tell me whats wrong in this?

#! /bin/bash head -5 $1 echo "remove $1 ?" read answer if then echo invalid answer elif rm $1 echo "$1 is deleted" elif then echo file is not deleted else echo "invalid answer" fi What i really want this to do is to ask to delete the file or not..it says something wrong... (1 Reply)
Discussion started by: nadman123
1 Replies

10. Shell Programming and Scripting

new to shell scripting: whats wrong with my if loop

#!/bin/bash for file in $HOME/*; do if ; then rm -i $file > /dev/null echo "$?" echo "$file has been deleted" fi done Been trying to learn shell scripting for a week or so now, when i run the script it doesnt display an error message, seems like it runs fine, however it doesnt delete... (10 Replies)
Discussion started by: stride6
10 Replies
Login or Register to Ask a Question