Thanks, Gabriele!
I'll be glad to rerun the benchmarks to include your version.
If possible, I'll do it later this evening.
-jn-
[EMAIL PROTECTED] wrote:
>
> Hello [EMAIL PROTECTED]!
>
> On 18-Set-00, you wrote:
>
> j> Read through the colon-delimited file below (a copy of
> j> an /etc/passwd file, mangled for security purposes),
> j> and print a report tallying the distinct values in the
> j> 7th field (in this case, the field that identifies the
> j> default shell for each userID). Sort the results by
> j> the value of the field being tallied, and print the
> j> results in neat columns.
>
> This uses a /DIRECT port; it's a bit different,too, just to show
> another way to do it. :)
>
> ========================================================
> REBOL []
>
> foreach-line: func [
> file [file!]
> code [block!]
> /local line
> ] [
> ; I don't know if this REALLY uses less memory...
> file: open/read/direct/lines file
> code: func [line] code
> while [line: pick file 1] [code line]
> close file
> ]
>
> shells: []
>
> count-shell: func [shell [string! none!]] [
> change shell: any [
> find/tail shells shell
> insert tail shells shell
> ] 1 + any [shell/1 0]
> ]
>
> foreach-line %passwords.txt [
> count-shell pick parse/all line ":" 7
> ]
>
> foreach [shell count] sort/skip shells 2 [
> print [
> ; we really need FORMAT here!
> head insert/dup count: form count " " 3 - length? count
> any [shell "(none)"]
> ]
> ]
> ========================================================
>
> I don't have Perl here, so please repeat the tests with this to
> see if it makes any difference.
>
> Regards,
> Gabriele.
> --
> Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
> Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/