perl: array matching


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting perl: array matching
# 1  
Old 09-09-2011
perl: array matching

Hi,

I have two files like this

HTML Code:
file 1:

xxtcgtatccgaggga
cgcgcgggggagg
jjsjjjjsjjjdtcgtat
aaaaaaacccaaan
ggtcgtatffaadda
gggctggalllslllssdkk
HTML Code:
file 2:

tcgtat
gctgga
I want to 1) match each element of file2 to each element of file1.
2) delete all the matched alphabets and subsequent letters in the element of file1.

so the output should be
HTML Code:
xx
cgcgcgggggagg
jjsjjjjsjjjd
aaaaaaacccaaan
gg
gg
I tried with regular expressions but couldnt figure out how to match elements of one array with another array.

If possible please provide the code in perl because I just started learning perl.

thanks in advanceSmilie
# 2  
Old 09-09-2011
Code:
#!/usr/bin/perl
open A, "$ARGV[1]";
open B, "$ARGV[0]";
chomp(@x=<A>);
local $/;
$_=<B>;
for $x (@x){
  s/$x.*//g;
}
print;

Run it like this: ./script.pl file1 file2
This User Gave Thanks to bartus11 For This Post:
# 3  
Old 09-09-2011
Quote:
Originally Posted by bartus11
Code:
#!/usr/bin/perl
open A, "$ARGV[1]";
open B, "$ARGV[0]";
chomp(@x=<A>);
local $/;
$_=<B>;
for $x (@x){
  s/$x.*//g;
}

Hi Bartus11,

thanks a lot. its working perfectly. But I have couple of questions to understand the code clearly.

1. what was the purpose pf 'local $/' on line 5?
2. In the code $_ = <B> , is each line of the file read individually and assigned to $_? I tried to assign the <B> to an array too just like A, but this part i was missing.

thanks again.Smilie

Last edited by pludi; 09-09-2011 at 04:32 PM..
# 4  
Old 09-09-2011
Quote:
Originally Posted by polsum
1. what was the purpose pf 'local $/' on line 5?
It is input record separator variable. Unsetting it is causing the whole file to be loaded into $_ in the next line of code.
Quote:
Originally Posted by polsum
2. In the code $_ = <B> , is each line of the file read individually and assigned to $_? I tried to assign the <B> to an array too just like A, but this part i was missing.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

HELP on Perl array / sorting - trying to convert Korn Shell Script to Perl

Hi all, Not sure if this should be in the programming forum, but I believe it will get more response under the Shell Programming and Scripting FORUM. Am trying to write a customized df script in Perl and need some help with regards to using arrays and file handlers. At the moment am... (3 Replies)
Discussion started by: newbie_01
3 Replies

2. Shell Programming and Scripting

PERL : Read an array and write to another array with intial string pattern checks

I have an array and two variables as below, I need to check if $datevar is present in $filename. If so, i need to replace $filename with the values in the array. I need the output inside an ARRAY How can this be done. Any help will be appreciated. Thanks in advance. (2 Replies)
Discussion started by: irudayaraj
2 Replies

3. Shell Programming and Scripting

Array in Perl - Detect several file to be in one array

Hi everyone I have one question about using array in perl. let say I have several log file in one folder.. example test1.log test2.log test3.log and the list goes on.. how to make an array for this file? It suppose to detect log file in the current directory and all the log file will... (3 Replies)
Discussion started by: sayachop
3 Replies

4. Shell Programming and Scripting

Hidden Characters in Regular Expression Matching Perl - Perl Newbie

I am completely new to perl programming. My father is helping me learn said programming language. However, I am stuck on one of the assignments he has given me, and I can't find very much help with it via google, either because I have a tiny attention span, or because I can be very very dense. ... (4 Replies)
Discussion started by: kittyluva2
4 Replies

5. Shell Programming and Scripting

Matching part of a string that is in an array

I am trying to do a comparison to see if these two string arrays match. I have tried assigning the array variable to another variable to get it to work but i can't figure it out. Here is what I have. #example of items that could be in the array #string="TEST"... (3 Replies)
Discussion started by: zatarra777
3 Replies

6. Shell Programming and Scripting

perl, put one array into many array when field is equal to sth

Hi Everyone, #!/usr/bin/perl use strict; use warnings; my @test=("a;b;qqq;c;d","a;b;ggg;c;d","a;b;qqq;c;d"); would like to split the @test array into two array: @test1=(("a;b;qqq;c;d","a;b;qqq;c;d"); and @test2=("a;b;ggg;c;d"); means search for 3rd filed. Thanks find the... (0 Replies)
Discussion started by: jimmy_y
0 Replies

7. Shell Programming and Scripting

Perl:Use of array elements in pattern matching

I need to use array elements while pattern matching. @myarr = (ELEM1, ELEM2, ELEM3); following is the statement which I am using in my code. Basically I want to replace the ELEM1/2/3 with other thing which is mentioned as REPL here. if (condition) { s/(ELEM1|ELEM2|ELEM3): REPL: /; } I... (3 Replies)
Discussion started by: deo_kaustubh
3 Replies

8. Shell Programming and Scripting

perl array matching between area code and no.

Hi Everyone, I have: my @No=qw(032106 032630 0380 034010 035110 0354801111); my $str_No=join(';', @No); I have a string $strA="03263033", so in order to determine this $strA area code matches with @No, I can do: if ( (rindex($str_No,substr($strA,0,5))))== -1) ) { print "Not... (1 Reply)
Discussion started by: jimmy_y
1 Replies

9. UNIX for Dummies Questions & Answers

matching each line in a column to an array

Hi, I have two files: file 1 has a list : ABC_1024 ABC_4507 ABC_5589 ERT_4389 DDB_5507 file 2 has an array: ABC_1011,ABC_1024,ABC_5670 DDB_4567 ERT_2345 January08 ABC_9099 DDB_9087 ERT_4567 March07 I need to go line by line in file 1... (2 Replies)
Discussion started by: greptastic
2 Replies

10. Shell Programming and Scripting

[Perl] Accessing array elements within a sed command in Perl script

I am trying to use a script to replace the header of each file, whose filename are stored within the array $test, using the sed command within a Perl script as follows: $count = 0; while ( $count < $#test ) { `sed -e 's/BIOGRF 321/BIOGRF 332/g' ${test} > 0`; `cat 0 >... (2 Replies)
Discussion started by: userix
2 Replies
Login or Register to Ask a Question