Ye Wise ones, i'm struggling over here...would love ye help.

I'm going to show you an example using one file format that works followed by an example with a new file format that does not work..And due to a requirements change i need to use the one that's not working

This is an example where the grep works when i use a manually created holiday file:

In this case $hol_file contains holidays for all global exchanges..below is the file format which i manually created (small sample of it):

CA: 20100101 20100215 20100305

US: 20100101 20100528 20100101

JP: 20100305 20100527 20100322

open CONFIG, "$hol_file" || die "Cannot open log for writing. $!"; while(<CONFIG>) { next if /^\s*$/ || /^\#/; chomp; if(/([^:\s]+):\s+(.*)/) { push @{$countries{$1}}, "$2"; } }

##$cntry_of_issue is a 2 char Country Code derived For purposes of this example let's assume it's US

my $date = 20100101; my @date = grep /$date/,@{$countries${cntry_of_issue}})

That worked splendidly but the global cal was too manually intensive. Now I'm receiving a new comma delimited global calendar file and am trying to do something similar to above, but the grep is not working (it's not finding the matching date).

The following example does NOT work:

$hol_file is now the new comma delimited file below (small sample of it):

978,XBRN,CH,Berne Stock Exchange,2010,20100101

978,XBRN,CH,Berne Stock Exchange,2010,20100102

978,XBRN,CH,Berne Stock Exchange,2010,20100321

978,XBRN,CH,Berne Stock Exchange,2010,20100324

open CONFIG, "$hol_file" || die "Cannot open log for writing. $!"; while (<CONFIG>) { chomp; next if /^\s*$/ || /^\#/; my $aref = [split /,/, $_]; push( @{$countries{$aref->[2]}}, $aref->[5]); }

##$cntry_of_issue is a 2 char Country Code derived For purposes of this example let's assume it's CH

my $date = 20100101; my @date = grep /$date/,@{$countries${cntry_of_issue}})

The grep in this case does NOT find the $date. Is it because the values(holidays) of the key (country), in this case "CH", is not a true list like in the 1st example above?

ur help for a solution is very much appreciated! Thanks


In reply to Trouble grepping values when hash contains multiple values per key by dirtdog

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.