Finding the numbers in a given range?
kindly tel me the concept to write a开发者_开发知识库 Perl program behind this ?
167 GATCAAAATACTTGCTGGA 185
192 TAGTAGATAGATAGATAGTAGTAG 228
in a fileA i ve a range from 167 to 185
as given as above and also 192 to 228
in another fileB i ve set of numbers
2 3 4 5 6 7 8 168 169 179 185 193 1000
now from the above set of numbers in file B, i need to find out which are the numbers present between the range of 167 to 185 and print those numbers in the output.
so, output will be 168,169,179,185, 193
what will be the concept behind writing this program?
If you have Perl-version 5.010 or greater you could try this:
#!/usr/bin/env perl
use warnings;
use 5.010;
my @arr1 = (167..185);
my @arr2 = qw/2 3 4 5 6 7 8 168 169 179 185 1000/;
for my $num (@arr2){
say"$num is present in the list" if $num ~~ @arr1;
}
use strict;
use warnings;
open my $fh, '<', $file1 or die "unable to open '$file1' for reading :$!";
my @arr1 = ();
while(my $line = <$fh>){
while($line =~ /(\d+).*?(\d+)/gs){
push (@arr1, $1..$2);
}
}
close($fh);
my @arr2 = qw/2 3 4 5 6 7 8 168 169 179 185 193 1000/;
my %hash;
@hash{@arr1} = ();
for my $num (@arr2){
print"$num is present in the list\n" if(exists $hash{$num});
}
Output:
168 is present in the list
169 is present in the list
179 is present in the list
185 is present in the list
193 is present in the list
if you can use Ruby(1.9+)
#!/usr/bin/env ruby
fileA=File.read("fileA").split
s,e = fileA[0] , fileA[-1]
fileB=File.read("fileB").split
puts fileB.select {|x| x >= s and x<=e }
output:
$ ruby myRange.rb
168
169
179
185
精彩评论