The solution of the Unnamed One is correct but a little terse if you are still learning. Here's a more spelled-out version of the same general idea:
#!/usr/bin/perl -w use strict; my %hash; # Do it for (<DATA>) { my ($name, $score, $date) = split /\|/; $hash{$name}++; } #Show it for (keys %hash) { print "$_ = $hash{$_}\n"; } __DATA__ name_x|score|date name_y|score|date name_z|score|date name_x|score|date name_z|score|date name_z|score|date
And just to explain what is happening with AM's solution: $name{(split/\|/)[0]} += 1; (split/\|/) returns a list which is then subscripted to get the zeroth element which is then used as the key for the %name hash. The value associated with that key (which may be magically created if it didn't exist before) is increased by one using the += assignment operator.

Just a word of encouragement about hashes. They are a wonderful tool for many purposes. And it is commonly said that you are not really programming in Perl until you can think in terms of hashes. Your point about their lacking a fixed order is well taken, but once you begin using hashes, you may be pleasantly surprised to discover how often that doesn't matter.


In reply to Re: Counting incidents of names in a file by dvergin
in thread Counting incidents of names in a file by Bishma

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.