As perldigious noted, your sample input and output don't make sense. I modified the input in the following way:
a 11-23 b 33-39 c 40-45 d 48-58
1-34 35-39 40-42 43-49 51-59 62-90

And got the following result:

a 11-23 b 33-34 b 35-39 c 40-42 c 43-45 d 48-49 d 51-58

from the following code:

#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; use constant { FROM => 0, TO => 1, NAME => 2, }; my @ranges; open my $F1, '<', shift or die $!; while (<$F1>) { my ($name, $range) = split; my ($from, $to) = split /-/, $range; push @ranges, [$from, $to, $name]; } my $range_idx = 0; open my $F2, '<',shift or die $!; while (<$F2>) { chomp; my ($from, $to) = split /-/; my $end; do { ++$range_idx until $range_idx > $#ranges || $ranges[$range_idx][FROM] <= $to && $ranges[$range_idx][TO] >= $from; last if $range_idx > $#ranges; my $start = $from > $ranges[$range_idx][FROM] ? $from : $ranges[$range_idx][FROM]; $end = $to > $ranges[$range_idx][TO] ? $ranges[$range_idx][TO] : $to; say $ranges[$range_idx][NAME], " $start-$end"; } while $to > ($from = 1 + $end); }

Explanation: @ranges is an array of arrays, it stores the ranges from the first file. While processing the second file, you remember the last range(1) used ( $range_idx ) and for input ranges(2) spreading over more than one range(1), you adjust the $from and try again.

Joining the b's and c's left as an exercise for the reader :-)

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

In reply to Re: finding intermediate range values from two file columns by choroba
in thread finding intermediate range values from two file columns by utpalmtbi

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.