in reply to Re^2: Trying to print out only unique array values-
in thread Trying to print out only unique array values-
I hope that's more clear. Please speak up if something doesn't make sense. I apologize for not documenting the first attempt a bit more clearly.#!/usr/bin/env perl use strict; use warnings; use List::MoreUtils qw(uniq); my $char_at=10; # Character to start grabbing data in the line my $num_chars=50; # Number of characters to grab in the line my @trnAccounts; # our array to store results # open our file open my $fh, '<', $ARGV[0] or die "Could not open '$ARGV[0]' $!"; # go through our file, line by line while (my $line = <$fh>) { chomp $line; # trim off trailing newline character first # OR, you could trim the line using regular expressions # $line =~ s/\A\s*//; # trim beginning # $line =~ s/\s*\z//; # trim end # OR, you could trim using Scalar::Util's trim or something # $line = trim($line); # skip this line completely if it doesn't contain the info we want next unless $line && length($line) >= $char_at; # grab the uppercased version of the first character in the line my $first_char = uc(substr($line,0,1) || ''); # skip this line if that first character's an H or T next if ($first_char eq 'H' or $first_char eq 'T'); # otherwise, push a portion of the line onto our array push @trnAccounts, substr($line, $char_at, $num_chars); } # get a unique list of info we stored. my @unique_accounts = uniq(@trnAccounts); # arrays are zero-based. for my $i (0..$#unique_accounts) { # still zero-based, but display it as 1-based print $i+1, ":", $unique_accounts[$i], "\n"; } # print out some totals print "total: ", scalar(@trnAccounts), "\n"; print "uniq : ", scalar(@unique_accounts), "\n";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Trying to print out only unique array values-
by rickman1 (Novice) on Aug 17, 2016 at 16:12 UTC |