| Path: cwi.nl!sun4nl!mcsun!uunet!cs.utexas.edu!convex!usenet | 
 | From: tchrist@convex.COM (Tom Christiansen) | 
 | Newsgroups: comp.lang.perl | 
 | Subject: Re: The problems of Perl (Re: Question (silly?)) | 
 | Message-ID: <1992Jan17.053115.4220@convex.com> | 
 | Date: 17 Jan 92 05:31:15 GMT | 
 | References: <17458@ector.cs.purdue.edu> <1992Jan16.165347.25583@cherokee.uswest.com> <=#Hues+4@cs.psu.edu> | 
 | Sender: usenet@convex.com (news access account) | 
 | Reply-To: tchrist@convex.COM (Tom Christiansen) | 
 | Organization: CONVEX Realtime Development, Colorado Springs, CO | 
 | Lines: 83 | 
 | Nntp-Posting-Host: pixel.convex.com | 
 |  | 
 | From the keyboard of flee@cs.psu.edu (Felix Lee): | 
 | :And Perl is definitely awkward with data types.  I haven't yet found a | 
 | :pleasant way of shoving non-trivial data types into Perl's grammar. | 
 |  | 
 | Yes, it's pretty aweful at that, alright.  Sometimes I write perl programs | 
 | that need them, and sometimes it just takes a little creativity.  But | 
 | sometimes it's not worth it.  I actually wrote a C program the other day | 
 | (gasp) because I didn't want to deal with a game matrix with six links per node. | 
 |  | 
 | :Here's a very simple problem that's tricky to express in Perl: process | 
 | :the output of "du" to produce output that's indented to reflect the | 
 | :tree structure, and with each subtree sorted by size.  Something like: | 
 | :    434 /etc | 
 | :      |     344 . | 
 | :      |      50 install | 
 | :      |      35 uucp | 
 | :      |       3 nserve | 
 | :      |       |       2 . | 
 | :      |       |       1 auth.info | 
 | :      |       1 sm | 
 | :      |       1 sm.bak | 
 |  | 
 | At first I thought I could just keep one local list around | 
 | at once, but this seems inherently recursive.  Which means  | 
 | I need an real recursive data structure.  Maybe you could | 
 | do it with one of the %assoc arrays Larry uses in the begat | 
 | programs, but I broke down and got dirty.  I think the hardest | 
 | part was matching Felix's desired output exactly.  It's not  | 
 | blazingly fast: I should probably inline the &childof routine, | 
 | but it *was* faster to write than I could have written the  | 
 | equivalent C program. | 
 |  | 
 |  | 
 | --tom | 
 |  | 
 | -- | 
 | "GUIs normally make it simple to accomplish simple actions and impossible | 
 | to accomplish complex actions."   --Doug Gwyn  (22/Jun/91 in comp.unix.wizards) | 
 |  | 
 |      Tom Christiansen           tchrist@convex.com      convex!tchrist | 
 |  |