tchrist@convex.COM (Tom Christiansen) (06/09/91)
According to the documentation, this should work, but doesn't:
while (<>) { @words{/\w+/g} = (); }
print join("\n", sort keys %words), "\n";
Changing the while's statement to
@words = /\w+/g;
@words{@words} = ();
doesn't help either.
It looks like it's not recognizing to reset where to
start looking after each //g when in an array context
(it's not supposed to in a scalar one.)
Sadly, this doesn't work either:
while (<>) { while (/(\w+)/g) { $words{$1}++; } }
So I think that either I just don't know how this guy's
supposed to work, or else it doesn't.
All the self-tests passed. I suggest adding some multi-line
tests to t/op/pat.t in the test suite to check for this.
And another thing: under the debugger, "p /\w+/g" yields:
"\nNULL regexp parameter at (eval) line 1, <> line 2.\n\n\n DB< 2 >\n";
(Yes, there are lotsa newlines there.)
And "p /\w+/g" dumps core.
--tom
--
Tom Christiansen tchrist@convex.com convex!tchrist
"So much mail, so little time."