title: Parse data from one tab delimited file into another with perl
body: <p>I have a tab delimited file like this (in my script DIVERGE):</p>
  
  <pre><code>contig04730 contigK02622 0.3515
  contig04733 contigK02622 0.3636
  contig14757 contigK03055 0.4
  </code></pre>
  
  <p>And I have a second tab delimited file like this (DATA):</p>
  
  <pre><code>contig04730 F GO:0000228 nuclear GO:0000783 telomere_cap
  contig04730 F GO:0005528 reproduction GO:0001113 eggs
  contig14757 P GO:0123456 immune GO:0003456 cells
  contig14757 P GO:0000782 nuclear GO:0001891 DNA_binding
  contig14757 C GO:0000001 immune GO:00066669 more_cells
  </code></pre>
  
  <p>I am trying to add the 2nd and 3rd column from first file into second so that I would have (OUT):</p>
  
  <pre><code>contig04730 F GO:0000228 nuclear GO:0000783 telomere_cap contigK02622 0.3515
  contig04730 F GO:0005528 reproduction GO:0001113 eggs contigK02622 0.3515
  contig14757 P GO:0123456 immune GO:0003456 cells contigK03055 0.4
  contig14757 P GO:0000782 nuclear GO:0001891 DNA_binding contigK03055 0.4
  contig14757 C GO:0000001 immune GO:00066669 more_cells contigK03055 0.4
  </code></pre>
  
  <p>This is the perl script I am trying to use (trying to adapt ones I have found on here - very new to perl):</p>
  
  <pre><code>#!/usr/bin/env/perl
  
  use strict;
  use warnings;
  
  #open the ortholog contig list
  open (DIVERGE, "$ARGV[0]") or die "Error opening the input file with contig pairs";
  
  #hash to store contig IDs
  my ($espr, $liya, $divergence) = split("\t", $_);
  
  #read through the ortho contig list and read into memory
  while(&lt;DIVERGE&gt;){
      chomp $_;   #get rid of ending whitepace
      ($espr, $liya, $divergence)-&gt;{$_} = 1;
  }
  close(DIVERGE);
  
  #open output file
  open(OUT, "&gt;$ARGV[2]") or die "Error opening the output file";
  
  #open data file
  open(DATA, "$ARGV[1]") or die "Error opening the sequence pairs file\n";
  
  while(&lt;DATA&gt;){
      chomp $_;
  
      my ($contigs, $FPC, $GOslim, $slimdesc, $GOterm, $GOdesc) = split("\t", $_);
      if (defined $espr-&gt;{$contigs}) {
          print OUT "$_", "\t$liya\t$divergence", "\n";
      }
  }
  close(DATA);
  close(OUT);
  </code></pre>
  
  <p>But I'm getting an error about useless use of private variable at line 15 and unitialized value _$ in split a line 10. I only have a very basic grasp of perl terms/variables. So if anyone could point out where I'm going wrong and how to fix, it would be much appreciated.</p>