in reply to Re^5: Sorting by value??
in thread Sorting by value??

Once again I appreciate your guys' help a lot I'm still fairly new to PERL ok here is the code with the changes made and also another bit of code I have Added

#!/usr/bin/perl use warnings; use strict; my $inFile = "UnSortReport.txt"; my $outFile = "SortedReport.txt"; open IN, "< $inFile"; open OUT, ">> $outFile"; my @not_sorted = <IN>; print OUT "|CSED Form|OrderNumber|Date|Total Documents|Total Pages +|\n"; @sorted = sort { lc($a) cmp lc($b) } @not_sorted; # alphabetic +al sort my $count = 0; foreach(@sorted) { $frmType = substr $_, 1, 4; if ($frmType eq "M729") { print OUT "$_"; $count ++; } else { print OUT "There were $count Monthly 729 runs\n"; } } $count = 0; foreach(@sorted) { $frmType = substr $_, 1, 4; if ($frmType eq "M737") { print OUT "$_"; $count ++; } else { print OUT "There were $count Monthly 737 runs\n"; } } $count = 0; foreach(@sorted) { $frmType = substr $_, 1, 4; if ($frmType eq "Q569") { print OUT "$_"; $count ++; } else { print OUT "There were $count Quarterly 569 runs\n"; } } close OUT; close IN; ##############The code Bellow looks a the SortedReport.txt and checks + for duplicate lines and removes them if any######################### +### my $file = 'SortedReport.txt'; my %seen = (); { local @ARGV = ($file); local $^I = '.bac'; while(<>) { $seen{$_}++; next if $seen{$_} > 1; print; } } print "finished processing file.\n";

Replies are listed 'Best First'.
Re^7: Sorting by value??
by kennethk (Abbot) on Jun 16, 2010 at 17:29 UTC
    A couple of comments:

    1. You added strict at the top, but did not add variable declarations (my). Therefore, it seems unlikely you tried to run your code before posting it. This is poor form as it shows a lack of effort on your part.
    2. You require my before @sorted = ... and $frmType = ... to fix the above.
    3. You did not fix the issue I pointed out in item 3 above -- your print statements are located inappropriately for your desired output. If you fix that, you don't need your second filtering stage. Each of your foreach loops should look something like:
      foreach(@sorted) { my $frmType = substr $_, 1, 4; if ($frmType eq "Q569") { print OUT "$_"; $count ++; } } print OUT "There were $count Quarterly 569 runs\n";
      where I have attempted to follow your existant style.
      Well its not lack of effort Its the Reason that I am new at it like Random guessing game new. Honestly i do not know what im doing sometimes, and just my luck sometimes it works the way i want it to