-- snip -- > > OK, so you only want the item and revision bits from the input file and > you only want unique one's at that? If this is all you want to do, you > have no need to read what's in the output file. The script below should > do what you want. Simply execute with the input file as the 1st argument > to the script and you can redirect STDOUT to a file. > > e.g. > perl this_script.pl input.txt > output.txt > > I have sorted the items alphabetically, if you need the items in the > order they were encountered in the input file, this will need to be > changed slightly. > > Let me know if this works as you want. > > Nathan > > -- code start -- > #!/usr/bin/perl -w > > use strict; > > my %item_rev; # use this to keep track of what item and revisions are > encountered > > open (INPUT, $ARGV[0]) or die "Couldn't open input file '$ARGV[0]': $!\n"; > while (<INPUT>) { > # skip all lines except those starting "CADItem" > next unless /^CADItem/; > > # split the line into it's component fields > my > ($item_type,$item_id,$item_revision,$relation,$datsettype,$dataset) = > split /;/; > > if (exists $item_rev{"$item_id;$item_revision"} ) { > # we already found the 1st occurence of this item and revision > } else { > # this must be the first occurence > $item_rev{"$item_id;$item_revision"} = 1; > } > } > close INPUT; > > # %item_rev now contains a unique list of items with revisions > foreach my $item_with_rev (sort keys%item_rev) { print STDOUT > "$item_with_rev\n"; } > -- code end -- > _______________________________________________ > ActivePerl mailing list > ActivePerl@listserv.ActiveState.com > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs >
Ouch - sorry for the line wrap!! Hopefully, you can figure it out! Nathan _______________________________________________ ActivePerl mailing list ActivePerl@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs