ghettofinger has asked for the wisdom of the Perl Monks concerning the following question:

Hello monks,

Look, I am really sorry for the question I am about to ask, but it is kind of late in the day, and my brain has turned to mush. I am trying to run a perl module ( Lingua::EN::Keywords) against an array, instead of a variable. Here is the example that the module gives you in cpan:

use Lingua::EN::Keywords; my @keywords = keywords($text);

But I am trying to open a file, and then run keywords against the file. Here is what I am trying:

#!/usr/bin/perl use Lingua::EN::Keywords; $data_file="msg00004.html"; open(DAT, $data_file) || die("COLUD NOT OPEN FILE"); @raw_power=<DAT>; close(DAT); my @keywords = keywords(@raw_power); foreach $word (@keywords) { print "$word, "; }

What I am trying to do is to open a file, get the keywords and then insert them as meta tags. I appreciate everyone's help.

Many thanks,
ghettofinger

Replies are listed 'Best First'.
Re: Running Lingua::En::Keywords against an array
by tlm (Prior) on Jul 07, 2005 at 23:39 UTC

    Why not

    my @keywords = keywords( join '', @raw_power );
    ? Or, if you don't need the separate lines,
    my $raw_power; { local $/; # get ready for slurpage open(DAT, $data_file) || die("COULD NOT OPEN FILE"); $raw_power = <DAT>; close(DAT); } my @keywords = keywords($raw_power);

    the lowliest monk

Re: Running Lingua::En::Keywords against an array
by sk (Curate) on Jul 07, 2005 at 23:30 UTC
    If it is expecting a scalar then just pass a scalar from the list repeatedly

    Am i missing something?

    foreach $text (@raw_power) { my @keywords = keywords($text); map { print; } @keywords; }
    Update: After reading tlm's post it makes more sense on what the OP requested.

    Thanks!

      This is probably not what he wants. If a keyword appeared on 100 different lines, this would output it 100 times.