Hi Monks, I am working on the problem below. I have written my initial code, input and output i require. I am getting trouble to flag the starts which are not always 1 for a particular record.
Start means (Example) ########################## 158146 158367 i 11,peter,JJ113952 135588 136297 8 12,peter,JJ113952 135356 135449 3 13,peter,JJ113952 In this start means this record which comes first 158146 158367 i 11,peter,JJ113952 and End means this record which comes last 135356 135449 3 13,peter,JJ113952 ########################## Unique means this record 62556 63635 y 1,andrew,JJ113954
which occurs only once.
#!/usr/bin/perl -w use strict; use Data::Dumper; my @DB; my %hash; open(FH, $ARGV[0]) || die("Cannot open:$!"); while (<FH>) { my($n1,$n2,$letter,$ordinal,$name,$code) = (my @record = split(/[\s,]+/,$_)); push (@DB, [@record]); push (@{$hash{"$name$code"}},$ordinal); } foreach my $name_code (keys %hash) { @{$hash{$name_code}}= sort{$a<=>$b} @{$hash{$name_code}}; } @DB = sort by_weird_sort_order @DB; #optional sort foreach my $line (@DB) { my($n1,$n2,$letter,$ordinal,$name,$code) = @$line; $ordinal = "U" if @{$hash{"$name$code"}} == 1; $ordinal = "T" if ( @{$hash{"$name$code"}}>1 and (@{$hash{"$name$code"}})[-1] == $ordinal ); printf STDOUT ("%-7s %-7s %-3s %s,%s,%s\n", $n1,$n2,$letter,$ordinal,$name,$code); } sub by_weird_sort_order { my ($a_ordinal,$a_name) = (@$a)[3,4]; my ($b_ordinal,$b_name) = (@$b)[3,4]; $a_name cmp $b_name or $b_ordinal <=> $a_ordinal } __DATA__ #62556 63635 y 1,andrew,JJ113954 #126185 126699 s 2,austin,JJ113956 #441474 441538 b 3,catherine,JJ029490 #442666 442843 9 4,catherine,JJ029490 #445778 445905 0 5,catherine,JJ029490 #446059 446273 l 6,catherine,JJ029490 #450319 450379 f 7,catherine,JJ029490 #81099 81630 y 8,flintoff,JJ113952 #68766 69005 j 9,morgan,JJ113955 #63868 63897 h 10,morgan,JJ113955 #158146 158367 i 11,peter,JJ113952 #135588 136297 8 12,peter,JJ113952 #135356 135449 3 13,peter,JJ113952 output should be like this ########## 62556 63635 y U,andrew,JJ113954 63868 63897 h S,morgan,JJ113955 68766 69005 j T,morgan,JJ113955 81099 81630 y U,flintoff,JJ113952 126185 126699 s U,austin,JJ113956 135356 135449 3 S,peter,JJ113952 135588 136297 8 M,peter,JJ113952 158146 158367 i T,peter,JJ113952 441474 441538 b S,catherine,JJ029490 442666 442843 9 M,catherine,JJ029490 445778 445905 0 M,catherine,JJ029490 446059 446273 l M,catherine,JJ029490 450319 450379 f T,catherine,JJ029490
Thanks

In reply to Creating Flags by crochunter

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.