use warnings; use strict; open my $schedule, '<', 'Schedule'; my %schedule; $schedule{$_} = 1 while (<$schedule>); close $schedule; open my $wave, '>', 'Wave' or die "Can't open 'Wave': $! +"; open my $keywords, '<', 'Agents' or die "Can't open 'Agents': +$!"; open my $search_file, '<', 'Definitions' or die "Can't open 'Definitio +ns': $!"; my $scheduleData = <<SDATA; SCHEDULE OTHER_NAME DONTCARE NOTIMPORTANT : MNDJWIEL#DIFFERENTDATA OTHERDATA NOTIMPORTANT END SCHEDULE NAME_I_WANT DONTCARE NOTIMPORTANT : MNDJWIEL#OTHERDATA OTHERDATA NOTIMPORTANT END SDATA my $agentData = <<ADATA; HSJEKDIE MNDJWIEL NSKQI OIFNHDU H3KID ADATA my $defsData = <<DDATA; MNDJWIEL#OTHERDATA SCRIPTNAME "JKASDHAJSDHAKJDAS.cmd" DESCRIPTION "NOTIMPORTANT" OIFNHDU#UNIMPORTANT SCRIPTNAME "JKASDHAJSDHAKJDAS.cmd" DESCRIPTION "SOMETIMES HAS AGENTNAME OIFNHDU" NSKQI#SOMETHINGHERE SCRIPTNAME "JKASDHAJSDHAKJDAS.cmd" DESCRIPTION "NOTIMPORTANT" HSJEKDIE#DOESNTMATTER SCRIPTNAME "SOMETIMES HAS AGENTNAME HSJEKDIE" DESCRIPTION "NOTIMPORTANT" DDATA open my $schdIn, '<', \$scheduleData or die "Can't open 'Schedule': $! +"; my %scheduleMatch = map {chomp; $_ => 1} <$schdIn>; open my $agentsIn, '<', \$agentData or die "Can't open 'Agents': $!"; open my $defsIn, '<', \$defsData or die "Can't open 'Definitions': +$!"; my $agentsList = join '|', map {chomp; qr/\Q$_\E/} <$agentsIn>; my $agentsMatch = qr|\b($agentsList)\b|; while (defined(my $defLine = <$defsIn>)) { chomp $defLine; if ($defLine =~ $agentsMatch && $defLine !~ /(SCRIPTNAME|DESCRIPTI +ON)/) { my $lineout = $defLine; my $flag = $scheduleMatch{$defLine} ? 'Yes' : 'No'; print "$defLine | $flag\n"; } }
Which prints this, because the example has only 1 of the below values from DDATA that's also in SDATA:
MNDJWIEL#OTHERDATA | Yes OIFNHDU#UNIMPORTANT | No NSKQI#SOMETHINGHERE | No HSJEKDIE#DOESNTMATTER | No
From this point I'd like to use the look behind method to make the data this
MNDJWIEL#OTHERDATA | Yes | NAME_I_WANT OIFNHDU#UNIMPORTANT | No | Missing NSKQI#SOMETHINGHERE | No | Missing HSJEKDIE#DOESNTMATTER | No | Missing
Which I can do via two separate scripts, but obviously it would be more efficient to join the functionality.
use warnings; use strict; my $scheduleData = <<SDATA; SCHEDULE OTHER_NAME DONTCARE NOTIMPORTANT : MNDJWIEL#DIFFERENTDATA OTHERDATA NOTIMPORTANT END SCHEDULE NAME_I_WANT DONTCARE NOTIMPORTANT : MNDJWIEL#OTHERDATA OTHERDATA NOTIMPORTANT END SDATA my $defLine = 'MNDJWIEL#OTHERDATA'; open my $schdIn, '<', \$scheduleData or die "Can't open 'Schedule': $! +"; my @values=(); while (<$schdIn>) { if (/(^SCHEDULE)(.*)/) { # SCHEDULE SCHEDULENAME, I only want the na +me. push(@values, $2); } if (/$defLine/) { print $values[-1]; last; } }
Which prints:
NAME_I_WANT
I will say that at first I didn't see the point in adding sample data but I kind of get it now, seeing what I'm trying to get from the data helps convey desired functionality that I may not be good at explaining.

In reply to Re^4: nesting loops help? by shadowfox
in thread nesting loops help? by shadowfox

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.