Perl Question Grep and exit status


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl Question Grep and exit status
# 1  
Old 05-13-2013
Perl Question Grep and exit status

Im being forced to write in perl. I prefer KSH or Expect, so I suppose its time to become more fluent with perl.

I have the following problem. I want to loop through Filea and check that each line in Filea is resident in Fileb.

Filea contents
two
four
six
eight
houseboat

Fileb contents
one
two
three
four
five
six
seven
eight
nine
ten

In ksh
Code:
 cat filea | while read x; 
do 
grep $x fileb >/dev/null 
echo $?; 
if [ "$?" = "1" ] 
then
echo "Error, $x not resident"
fi
done

Heres what I got so far in Perl. Im trying to resist the urge to use exec() and system(). Where you see the pseudo code is where Im stuck.

Code:
#!usr/bin/perl
use strict; 
use warnings;
use Data::Dumper;
use vars qw ( @FA $lineinfilea );
open (iFILEA, "<filea") or die;
@FA = <iFILEA>;
close iFILEA;
#
open (iFILEB, "<fileb") or die;;
@FB = <iFILEB>;
close iFILEB;
#
foreach $lineinfilea  (@FA) {
 chomp $lineinfilea;
 print $lineinfilea, "\n";
   #PSEUDO code 
   #grep $lineinfilea @FB
   #  if the exit status of grep $linefilea @FB is 1 
   #   then  
   #   print $lineinfilea, "is not resident.\n;
   #
}

Thanks very much for the help !

PS That's why I like KSH .. a lot less typing Smilie ..
# 2  
Old 05-13-2013
This User Gave Thanks to clx For This Post:
# 3  
Old 05-14-2013
Thanks you.

---------- Post updated 05-14-13 at 10:10 AM ---------- Previous update was 05-13-13 at 02:40 PM ----------

Ok this was working yesterday .. not sure why its not working today ...


Code:
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $lineinfilea;
my @FA;
my @FB;
open (iFILEA, "<filea") or die;
@FA = <iFILEA>;
close iFILEA;
#
open (iFILEB, "<fileb") or die;
@FB = <iFILEB>;
close iFILEB;
#
foreach $lineinfilea  (@FA) {
 chomp $lineinfilea;
 print $lineinfilea, "\n";
 if ( $lineinfilea ~~ @FB ) {
   print "The array contains $lineinfilea\n";
 } else {
  print "The array doesnt contain $lineinfilea\n";
 }


Todays output ...

two
The array doesnt contain two
four
The array doesnt contain four
six
The array doesnt contain six
eight
The array doesnt contain eight
houseboat
The array doesnt contain houseboat




Test files are as originally posted.

Any suggestions ?
# 4  
Old 05-14-2013
Efficient and easy with awk:
Code:
awk 'NR==FNR {a[$1]; next} !($1 in a) {printf "Error, %s not resident\n",$1}' fileb filea

---------- Post updated at 10:57 AM ---------- Previous update was at 10:03 AM ----------

After some googling and trying, I found how to do it in perl
Code:
#!/usr/bin/perl -w
my %FB;
open (Fb, "<fileb") or die;
while (<Fb>) {
  chomp;
  $FB{$_}="";
}
close Fb;
open (Fa, "<filea") or die;
while (<Fa>) {
 chomp;
 print "Error, $_ not resident\n" unless exists $FB{$_};
}
close Fa;

# 5  
Old 05-14-2013
Quote:
Originally Posted by sumguy
...
Ok this was working yesterday .. not sure why its not working today ...
...
What are the versions of Perl you used yesterday and today?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Want to get the exit status

Hi All, I am trying to create a zip file with all the txt files(these are in large number) in the current directory. I am able to do this operation sucessfully. After this i want to get the status of the tar command executed and do accordingly. When i am trying with the below code, the status... (3 Replies)
Discussion started by: paddu
3 Replies

2. Shell Programming and Scripting

Exit Status

I have a shell script (#!/bin/sh) that interacts with Appworx and Banner Admin. In my script I want to check the exit status of awrun before continuing. awrun can run for 10 seconds or it can run for over a minute. So my question is, will it go through my if statement before awrun may even be... (2 Replies)
Discussion started by: smkremer
2 Replies

3. Shell Programming and Scripting

Exit status of grep

I am trying to get the exit status of grep and test a condition with it, But it does not seem to be working as expected since i am doing something wrong apparently as per grep help Exit status is 0 if match, 1 if no match, and 2 if trouble. My problem is something like this templine - a... (7 Replies)
Discussion started by: prasbala
7 Replies

4. Shell Programming and Scripting

Check for exit status

Hi I have following code I want If whole code executes successfully then return true If found any error then print the error I tried if ; then But this checks only for the just upper line execution #!/bin/bash PATH1=/var/log/mysql PATH2=/home/ankur/log FILE1=mysql-bin.index... (4 Replies)
Discussion started by: kaushik02018
4 Replies

5. UNIX for Dummies Questions & Answers

Using exit status of GREP to proceed

Hi I have a script that carries out a "grep" command, and displays the output on screen. What I need to do is utilise the exit status of this grep, so that, for example, if it returns no entries, it asks the user if they want to set up a new user, and if the grep returns an entry, it states... (1 Reply)
Discussion started by: Great Uncle Kip
1 Replies

6. Shell Programming and Scripting

Exit status

I'm preparing for exam and one of exams is to write own test command... I wonder if in unix is a command which just returns exit code you specify.. I know I can easily write a function like this: exStatus() { return $1 } -> my question is rather theoretical thank you! (9 Replies)
Discussion started by: MartyIX
9 Replies

7. Shell Programming and Scripting

How to get the exit status

Hi all, I'm running a program which return 1 upon success. But when encounters problem shell return 's '1' . How to differentiate between them the shell return value and script return value. Ex. function fn return '1' if executed successfully and '0' if failed. But when if shell encounters... (1 Reply)
Discussion started by: yhacks
1 Replies

8. HP-UX

Return of EXIT status ( $? )

I have the question: How return the exit code from then assign : VAR=$(command ) for ex. VAR=$(ls ....) VAREXIT=$? echo $VAREXIT VAREXIT is equal to 0 if the directory exist or not exist. WHI?? if i execute the command direct from line-command , the value of $? is different if... (1 Reply)
Discussion started by: ZINGARO
1 Replies

9. Shell Programming and Scripting

How to get exit status codes in bash from Perl?

I apologize if I have already posted this query. I scanned back quite a few pages but could not find such a query. If my perl code contains "exit(33)" how can I get that value in bash for use in a "if" statement. Thanks, Siegfried (5 Replies)
Discussion started by: siegfried
5 Replies

10. Shell Programming and Scripting

exit status

i downloaded a text file from metalab.unc.edu called sh.txt and in this reference manual it refers to shell scripting exit status .. at the end of one of the examples that author gave an exit status of 127.. to what does a 127 exit status refer too and what is its purpose in the code. moxxx68 (1 Reply)
Discussion started by: moxxx68
1 Replies
Login or Register to Ask a Question