擅长:python、mysql、java
<p>可以使用<a href="https://metacpan.org/module/DBD%3a%3aCSV" rel="nofollow">DBD::CSV</a>以类似SQL的方式处理问题:</p>
<pre><code>#!/usr/bin/env perl
use strict;
use utf8;
use warnings 'all';
use Data::Printer;
use DBI;
my $dbh = DBI->connect('dbi:CSV:', undef, undef, {
f_encoding => 'utf8',
csv_quote_char => undef,
csv_escape_char => undef,
csv_sep_char => "\t",
csv_eol => "\n",
csv_quote_space => 0,
csv_quote_null => 0,
csv_tables => {
fileA => { file => 'fileA.tsv' },
fileB => { file => 'fileB.tsv' },
},
RaiseError => 1,
PrintError => 1,
}) or die "DBI/DBD::CSV error: " . $DBI::errstr;
my $sth = $dbh->prepare(<<SQL_QUERY);
SELECT *
FROM fileA
JOIN fileB ON
(StrtA <= StpB) OR (StrtB <= StpA)
WHERE Name IS NOT NULL
SQL_QUERY
$sth->execute;
while (my $row = $sth->fetchrow_arrayref) {
p $row;
}
$sth->finish;
$dbh->disconnect;
</code></pre>
<p>(不过,我不确定我是否理解您的重叠条件)</p>