On Sat, 2008-08-02 at 06:31 -0700, hsfrey wrote: > I'm trying to set up a list of words to ignore in a text. > I tried it like this: > > my @ignore = ("U.S.C", "Corp", "Miss", "Conf", "Cong"); > > and later in a loop > > if ( $exists $ignore [$lastWord] ) { next;} > > But that tested positive for EVERY $lastWord and skipped every time ! > It did the same when I used "defined" instead of "exists". > > I finally got it to work with this kludge: > > my %ignore = ("U.S.C"=>5, "Corp"=>5, "Miss"=>5, "Conf"=>5, "Cong"=>5); > if ( $ignore{$lastWord} eq 5) { next;} > > Why didn't exists and defined work? > > Harvey > >
The parameter for an array must be a number. If $lastword does not contain a number, perl decides that it is zero. The expression $ignore[$lastword] would be "U.S.C", which exists and is defined. I think you want something like this: if( grep { /^$lastword$/ } @ignore ){ next; } See `perldoc -f grep` for details. You should always place these two lines at the beginning of your scripts: use strict; use warnings; They would have warned you that $lastword is not numeric. -- Just my 0.00000002 million dollars worth, Shawn "Where there's duct tape, there's hope." "Perl is the duct tape of the Internet." Hassan Schroeder, Sun's first webmaster -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/