Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Jan 2003 21:44:59 -0800
From:      "Crist J. Clark" <crist.clark@attbi.com>
To:        freebsd-chat@freebsd.org
Subject:   Script Challenge
Message-ID:  <20030117054458.GA50247@blossom.cjclark.org>

next in thread | raw e-mail | index | archive | help
I ran into a little problem today and needed to write a quick
script. The problem isn't to tough, and I got it done with a 15
line-or-so Perl script, but there must be a more elegant way to do
this.

Here's the basic problem: I have a flat file that contains a database.
Items in the database can contain sub-items which in turn contain
sub-items with no hard limit to the recursion. The format of the file
is,

	:b_item (value)
	:a_item (
		:z_subitem(value)
		:x_subitem(value)
		:y_subitem(
			:r_subsubitem(value)
			:t_subsubitem(vaule)
			:s_subsubitem(value)
		)
		:w_subitem(value)
	)
	:c_item(value)

That is, "values" whether individual items or lists, are surrounded by
parentheses. (You need not worry about parentheses in "values" or the
closing parentheses of a list not showing up on its own line, it
always does.)

I want to sort each level. That is, the above would become,

	:a_item (
		:w_subitem(value)
		:x_subitem(value)
		:y_subitem(
			:r_subsubitem(value)
			:s_subsubitem(value)
			:t_subsubitem(vaule)
		)
		:z_subitem(value)
	)
	:b_item (value)
	:c_item(value)

Like I said, I used a Perl script with a recursive function to do
it, but it ain't all that pretty. I suspect I'm missing a really cool
way to do it. Any suggestions? (Any language will do.)
-- 
Crist J. Clark                     |     cjclark@alum.mit.edu
                                   |     cjclark@jhu.edu
http://people.freebsd.org/~cjc/    |     cjc@freebsd.org

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030117054458.GA50247>