in reply to finding the right corresponding element

I've conjured up a nice short solution for you. It breaks the appropriate columns into chunks based on alpha- or numeric-ness and then compares them.

#! /usr/bin/perl use strict; while (my $line = <DATA>) { chomp $line; my @line = split ";", $line; next if $line[0] eq $line[1]; next unless length $line[0] == length $line[1]; my @one = breakup($line[0]); my @two = breakup($line[1]); next unless scalar(@one) == scalar(@two); my @match = map { $one[$_] eq ++$two[$_] || ++$one[$_] eq --$two[$_] ? 1 : 0 } (0..$#one); print $line, "\n" if 1 == grep {$_} @match; } sub breakup { my @out; while ($_[0]) { $_[0] =~ s/^([a-zA-z]|[0-9]+)//; push @out, $1; } return @out; } __DATA__ VIR19;VIR20;VIR;B744; VIR19;VIR207;VIR;B744; VIR19;VIR21;VIR;B744; VIR19;AF34B;VIR;B744; VIR19;AF34C;VIR;B744; VIR19;IB580F;VIR;B744; VIR19;IB581F;VIR;B744; VIR19;AL34BC;VIR;B744; VIR19;AL34AC;VIR;B744; VIR19;ADH00A;VIR;B744; VIR19;ADH01A;VIR;B744; AL34BC;IB580F;VIR;B744; AL34BC;IB581F;VIR;B744; AL34BC;AL34BC;VIR;B744; AL34BC;AL34AC;VIR;B744; AL34BC;ADH00A;VIR;B744; AL34BC;ADH01A;VIR;B744;

Prints:

VIR19;VIR20;VIR;B744; AL34BC;AL34AC;VIR;B744;

Replies are listed 'Best First'.
Re^2: finding the right corresponding element
by Zen (Deacon) on Aug 13, 2007 at 16:14 UTC
    Proposed code improvement-
    if(defined $holiday_season) { if(defined $weekend) { $midwest_flight_to_northeast++; $price--; } }