On Jun 10, 2004, at 9:46 PM, Beau E. Cox wrote:
Hi -
I am trying to come up with a simple, elegant word parsing script, that:
* takes a scalar string, and * splits it into words separating on white space, commas, and a set of delimiters: "" '' // () {} [] ##, and * returns the array of words.
[snip code]
There's really not a lot wrong with you're version, save that all that use of substr() and pos() makes me think too much to figure out what it's doing. Here's how I would do the same thing:
sub parse_words {
my $line = shift; my @words = ();
while ( $line =~ s/^\s*(["'\/#])(.*?)\1\s*// or
$line =~ s/^\s*(\(.*?\)|\{.*?\}|\[.*?\]|<.*?>)\s*// ) {
push @words, $2 || substr $1, 1, length($1) - 2;
}
push @words, split m/[,\s]+/, $line if length $line;
return @words;
}I'll leave it to you to decide if that's "elegant" though.
James
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>
