Hi,

I am a bit stuck with references and was hoping someone could help me 
out.

In File1 I need to isolate the last number in the column and see if 
it exists in file2. If so, I would like to add the content of the 
line from file1 and print it out. There may be other ways of doing 
this but I wanted to try to do it with references as this is my 
current weak spot :-(

Below is some sample data and my effort. What is happening with my 
current attempt is that it is simply looping through the 2nd file and 
printing the last assignment to the hashref. So I guess the problem 
is with the way I am creating the hashref rather then dereferencing 
it. 

I am sure this is a simple problem. Can anyone offer a bit of 
assistance . I promise will do some more reading tonight.

Thanx.
Dp.



======== my effort.pl ==========
#!/bin/perl


use strict;
use warnings;

my $file = "file1.txt";
my $file2 = "file2.txt";
my $in = 0;
my $found = 0;
my $hashref;

open(FH,$file) or die "Can't open $file:$!\n";

while (<FH>) {
        chomp;
        my @f = split(/\t/,);
        next if ($f[3] =~ /NULL/i);
        if ($f[3] =~ /(p|s)\d{4}/i){
                ++$in;
                my $num = uc($f[3]);
                my $rest = "$f[0]"."\t"."$f[1]"."\t"."$f[2]"."\t";
#               print "$num\n";
                $hashref = {
                        'number' => $num,
                        'rest' =>  $_,
                };
        }                                       
}
close(FH);


open FH2, $file2 or die "Can't open $file2:$!\n";
while (<FH2>) {
        chomp;
        next if ($_ !~ /(P|S)\d{4}/);
        (my $num) = ($_ =~ /\s(\w\d{4})/);
        print "Comparing $num with $hashref->{'number'}\n";
        if (exists($hashref->{'number'}) ) {
#               print "$hashref->{rest} $hashref->{'number'}\n";
                ++$found;
        }
}
close(FH2);

print "Done. Found $found / $in\n\n";






============== file1.txt ==============

42-16002862     8000014937      58000500        S8499
42-16002864     8000014938      58000501        S8500
42-16002824     8000014939      58000502        S8501
42-16002866     8000014941      58000504        S8503
42-16002868     8000014943      58000506        S8505
42-16002863     8000014944      58000507        S8506
42-16002827     8000014945      58000508        S8507
42-16002826     8000014946      58000509        S8508
42-16002823     8000014947      58000510        S8509
42-16002867     8000014948      58000511        S8510
42-16002870     8000014949      58000512        S8511
42-16002869     8000014951      58000514        S8513
42-16002871     8000014952      58000515        S8514
42-16002872     8000014953      58000516        S8515
42-16002876     8000014954      58000517        S8516
42-16002830     8000014955      58000518        S8517
42-16002829     8000014956      58000519        S8518
42-16002831     8000014957      58000520        S8519
42-16002832     8000014958      58000521        S8520
42-16002875     8000014959      58000522        S8521
42-16002834     8000014960      58000523        S8522
42-16002833     8000014961      58000524        S8523
42-16002881     8000014962      58000525        S8524
42-16002887     8000014963      58000526        S8525
42-16002884     8000014964      58000527        S8526
42-16002886     8000014965      58000528        S8527
42-16002835     8000014966      58000529        S8528
42-16002839     8000014967      58000530        S8529
42-16002838     8000014968      58000531        S8530
42-16002840     8000014969      58000532        S8531
42-16002836     8000014970      58000533        S8532
42-16002841     8000014971      58000534        S8533
42-16002883     8000014973      58000536        S8535
42-16002880     8000014974      58000537        S8536
==================================


========= file2 =====================
M175/292        S8499
P260/050        S8500
P206/202        S8501
P216/318        S8503
P216/354        S8505
P242/252        S8506
P242/207        S8507
P242/291        S8508
M175/276        S8509
M600/210        S8510
P216/282        S8511
P216/342        S8513
M560/207        S8514
P242/283        S8515
P242/238        S8516
P530/128        S8517
P242/257        S8518
P260/067        S8519
P216/346        S8520
P242/258        S8521
P206/187        S8522
P206/022        S8523
P216/307        S8524
P330/043        S8525
P256/040        S8526
M172/017        S8527
T395/070        S8528
P242/251        S8529
P248/234        S8530
P276/075        S8531
P270/060        S8532
P248/156        S8533
P276/153        S8535
P276/160        S8536
====================

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to