#!/usr/local/bin/perl # # Copyright by 1stMillionAt33.com # $thefile=$ARGV[0]; open(IN_FILE, $thefile) || die "ERROR: Can't open $thefile $!"; @all_lines=; close(IN_FILE); $num_of_line = $#all_lines; if ($#ARGV >= 1) {$st_line=$ARGV[1]-1;} else {$st_line=0; } if ($#ARGV >= 2) {$end_chop=$ARGV[2]; } else {$end_chop=0; } $i=$st_line; @bar_list=(); @id_list=(); @num_list=(); while ( $i<=$num_of_line-$end_chop) { $the_line = $all_lines[$i]; chop $the_line; $the_line = uc($the_line); if (length($the_line) < 3) { } else { @entry = split(/\s+/,$the_line); if ( $entry[$#entry] =~ /^9[5-9][0-9][0-9]$/ ) { if ( !($the_line =~ /[a-z]/) ) { push @bar_list, "$id_list[0] $the_line"; # print "$id_list[0] $the_line\n"; shift(@id_list); } else { # print $the_line."\n"; push @bar_list, $the_line; } } else { chop($the_line); chop($the_line); # print "$the_line\n"; if ($the_line =~ /number refiner/) { @id_list=(); } else { push @id_list, $the_line; } } } $i++; } $gross_wgt = 0; $fine_wgt = 0; open(OUT_FILE, "> dup_list"); if (1) { for ($i=0; $i<=$#bar_list; $i++) { # print $bar_list[$i]."\n"; } for ($i=0; $i<=$#id_list; $i++) { print $id_list[$i]."\n"; } print $#id_list." $#bar_list\n"; $i=0; @ID=(); @IDline=(); while ( $i<=$#bar_list ) { $the_line = $bar_list[$i]; chop $the_line; @entry = split(/\s+/,$the_line); if ( ($#entry >= 2) && ($entry[$#entry] =~ /^99[0-9][0-9]$/) ) { $gross_wgt += $entry[$#entry-2]; $fine_wgt += $entry[$#entry-1]; } push @ID, uc($entry[0])." ".uc($entry[1])." ".uc($entry[2]); push @IDline, $i; $i++; } $BarNum = $#bar_list+1; $dup=0; $gross_dup_wgt = $gross_wgt; $fine_dup_wgt = $fine_wgt; @ID = sort { $a cmp $b } @ID; $i=0; while( $i<$#ID ) { if ($ID[$i] eq $ID[$i+1]) { print OUT_FILE "$ID[$i]\n"; $dup=$dup+1; $the_line = $all_lines[$IDline[$i+1]]; chop $the_line; @entry = split(/\s+/,$the_line); if ( ($#entry >= 2) && ($entry[$#entry] =~ /^9[5-9][0-9][0-9]$/) ) { $gross_wgt -= $entry[$#entry-2]; $fine_wgt -= $entry[$#entry-1]; } splice(@ID, i+1 ,1); splice(@IDline, i+1 ,1); } else { $i++; } } print "Number of Bars is ",$#bar_list+1,"\n"; print "Gross weight (w/o dup) is $gross_wgt\n"; print "Fine weight (w/o dup) is $fine_wgt\n"; print "Number of Bars with duplicated is ",$BarNum,"\n"; print "Gross weight (w dup) is $gross_dup_wgt\n"; print "Fine weight (w dup) is $fine_dup_wgt\n"; print "Number of duplicated bars are ",$dup,"\n"; } else { @ID=(); @IDline=(); $i=$st_line; while ( $i<=$num_of_line-$end_chop) { $the_line = $all_lines[$i]; chop $the_line; if ( $the_line[0] < 20 ) { print $the_line[0]+100, " Found $i!\n"; die; } if ( $the_line =~ /^$/ ) { $i++; #skip one line } else { @entry = split(/\s+/,$the_line); if ( ($#entry >= 2) && ($entry[$#entry] =~ /^99[0-9][0-9]$/) ) { $gross_wgt += $entry[$#entry-2]; $fine_wgt += $entry[$#entry-1]; } if ( ($#entry >=1) && ($entry[1] =~ /[a-z]|[A-Z]/) ) { push @ID, uc($entry[0])." ".uc($entry[1])." ".uc($entry[2]); push @IDline, $i; } } $i++; } @ID = sort { $a cmp $b } @ID; $BarNum = $#ID+1; $dup=0; $gross_dup_wgt = $gross_wgt; $fine_dup_wgt = $fine_wgt; $i=0; while( $i<$#ID ) { if ($ID[$i] eq $ID[$i+1]) { print OUT_FILE "$ID[$i]\n"; $dup=$dup+1; $the_line = $all_lines[$IDline[$i+1]]; chop $the_line; @entry = split(/\s+/,$the_line); if ( ($#entry >= 2) && ($entry[$#entry] =~ /^99[0-9][0-9]$/) ) { $gross_wgt -= $entry[$#entry-2]; $fine_wgt -= $entry[$#entry-1]; } splice(@ID, i+1 ,1); splice(@IDline, i+1 ,1); } else { $i++; } } for ($i=0; $i<20; $i++) { print $ID[$i]."\n"; } print "Number of Bars is ",$#ID+1,"\n"; print "Gross weight (w/o dup) is $gross_wgt\n"; print "Fine weight (w/o dup) is $fine_wgt\n"; print "Number of Bars with duplicated is ",$BarNum,"\n"; print "Gross weight (w dup) is $gross_dup_wgt\n"; print "Fine weight (w dup) is $fine_dup_wgt\n"; print "Number of duplicated bars are ",$dup,"\n"; } close(OUT_FILE);