in reply to counting elements using a hash
The first task is to get the "number" that you wish to track from the input lines.
The second step is simply to count using a hash table. It is not necessary to test for exists(). Perl will create a new key if the key doesn't exist.
Try again and show some just a couple of lines of example input and your revised code.#!/usr/bin/perl -w use strict; my %count; open (INPUT, '<', "some_input_file") or die "unable to open some_input_file"); while (<INPUT>) { my ($number) =~ /(\d+)/; #maybe???? next unless $number; #skip undef's $count{$number}++; #new key if $number not there } foreach my $number (sort{$a <=> $b} keys %count) #numeric sort { print "$number occurs $count{$number} time(s)\n"; }
There is no need to iterate over all 101 possibilities for the number on each line. Process each line once, get the number, make a decision and it is "over with" - don't loop 100 times for each input line.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: counting elements using a hash
by AnomalousMonk (Archbishop) on Sep 23, 2012 at 09:08 UTC | |
by Marshall (Canon) on Sep 23, 2012 at 12:28 UTC | |
Re^2: counting elements using a hash
by bk1388 (Initiate) on Sep 23, 2012 at 21:13 UTC |
In Section
Seekers of Perl Wisdom