Jerry Kassebaum wrote:

> Thanks for your help, Bill! I ran your code, which worked, which made me 
> take a different look at my code.
> 
> Sorry, but I didn't give you enough info to spot the problem. Here's the 
> whole thing:
> 
> ################
> 
> open(STORAGE, "<gutter.txt");
> 
> 
> while(<STORAGE>)      {
>       $_ =~ /(\w+)/;
>       $sym{$1}++;
>       foreach $v (keys %sym)                  {
>               if($sym{$v}>1)          {
>                       print $v; <>;
>                                               }
>                                                          }
>                                    }
> 
> close STORAGE;
> 
> print "That's it."; <>;
> 
> ###################

Try this:

open IN, "<gutter.txt" or die "open: $!($^E)";

my $line = 0;
my $dups = 0;
while (<IN>) {

        /^(\w+)/;
        ++$sym{$1};

        ++$line;
        if ($sym{$v} > 1) {
                print "DUP($line): $v\n";
                ++$dups;
        }
}
close IN;

print "Done - $dups dups found\n";
<>;             # debug wait

> I'm checking gutter.txt for duplicates. Each line is a word followed by 
> info. I want to make sure that first word is never repeated.
> 
> The problem is the final closing bracket. Put it before the foreach line and 
> it all works as intended.
> 
> I was thinking I needed a "next" or "last" or "break" or something. Your 
> code showed me that wasn't the problem. Thanks!
> 
> 
>>What's the <>; doing in there ?
> 
> 
> I don't like to open a DOS window if I don't have to. "<>;" is a debugging 
> tool. When I double-click on file.pl, the DOS output window will stay open 
> waiting for me to hit <enter>. After I hit the final <enter>, it closes. 
> When I'm done testing, I take them out.

I have two console windows open from the time I boot.

>>Where's your newline on the print ?
> 
> 
> That's another side-effect of "<>;".
> 
> 
>>What does it repeat ?
> 
> 
> Heh, you're still making me think! It wasn't an infinite loop afterall.
> 
> Here's enough data for gutter.txt to give you the idea.
> 
> ###
> %%AMAT**Tue Sep  5 07:07:15 2006
> %%BCE**Tue Sep  5 07:07:15 2006
> %%AMAT**Tue Sep  5 07:07:15 2006
> %%BRLI**Tue Sep  5 07:07:16 2006
> %%BNK**Tue Sep  5 07:07:16 2006
> ###
> 
> My original text has a lot more lines. It only repeats once per line, due to 
> the "while". I never pressed <enter> enough to get to the end, so I assumed 
> infinity. Oops.
> 
> I hope that wasn't too boring. I thought I owed you an answer to your 
> questions, and an apology for not giving you enough info the first time.
_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to