Re: Graphing tool for PerlGuts Illustrated

2005-05-20 Thread Brian Ingerson
On 20/05/05 22:06 +0300, Yuval Kogman wrote:
 Hola,
 
 In PerlGuts Illustrated you have some very pretty diagrams...
 
 Could you please hint me on what you generated them with, so that I
 can use it for the forthcomming PugsGuts Illustrated?

I used to sit next to Gisle at ActiveState.

IIRC(AIDRC), he hand-hacked postscript files for those diagrams :P

Cheers, Brian


Re: Inline::Pugs landed to Pugs tree

2005-05-19 Thread Brian Ingerson
On 19/05/05 04:52 +0800, Autrijus Tang wrote:
 An one-hour hack of mine proved fruitful.  This is Perl 5 script,
 calling into Perl 6 functions defined inline:
 
 #!/usr/bin/perl
 use Inline Pugs = '
   sub postfix:! { [*] 1..$_ }
 sub sum_factorial { [+] 0..$_! }
 ';
 print sum_factorial(3); # 21
 
 The implementation is in lib/Inline/Pugs.pm that comes with Pugs tree.
 You'll need Inline.pm from CPAN to run the example above.
 
 Patches, suggestions, etc welcome. :-)
 
 Enjoy,
 /Autrijus/

*evil grin*

An five-minute hack of mine proved fruitful.  This is Perl 5 script,
calling into Perl 6 functions defined inline:

#!/usr/bin/perl
use pugs;
sub postfix:! { [*] 1..$_ }
sub sum_factorial { [+] 0..$_! }
no pugs;
print sum_factorial(3); # 21

The implementation is in lib/pugs.pm that comes with Pugs tree.
You'll need Inline.pm from CPAN to run the example above.

Patches, suggestions, etc welcome. :-)

Enjoy,
/ingy/


Re: ^method ?

2005-05-15 Thread Brian Ingerson
On 15/05/05 11:17 -0400, Rob Kinyon wrote:
 On 5/15/05, Juerd [EMAIL PROTECTED] wrote:
  Autrijus Tang skribis 2005-05-15 19:28 (+0800):
   On Sun, May 15, 2005 at 01:19:53PM +0200, Juerd wrote:
Or was your choice of words poor, and did you not mean to discuss the
dot's *default*, but instead a standard way to write the current
invocant?
   I think what Rob suggested is that:
   method ($foo)
   means
   method ($self: $foo)
  
  Then I hereby apologise to Rob for my own poor choice of words.
  
  I don't like the idea of having a normal identifier ever used by
  default, except $_, which is already aliased to the invocant.
 
 Autrijus is much more eloquent that (apparently) I can ever hope to
 be. Thank you.
 
 If I understand correctly, we're discussing what should happen if you
 do something like .method($foo) within another method and if there
 should be shorthand way of writing whatever it is.
 
 Right now, P6 has $?SELF and I'm saying that instead of using $?SELF,
 we should use $self wherever $?SELF would be used. $_ is still the
 topic and would be the default invocant if you have .method($foo).
 What I'm saying is that you can have
 
 method ( Int foo ) {
 $self.otherMethod( foo );
 }

+1

FWIW, after reading this whole conundrum, I think that erring on the
side of pragmatism seems like the right choice. If I jump into some
source code and see:

   $self.some_such();

I am going to feel right at home. No doubt about it. 

As to *how* it works (by hook, crook, preclaration or macro etc), I
leave it to Larry to do the proper hand waving to make it fit in cleanly
(for some Wallian definition of clean).

Cheers, Brian

 and it will DWIM. Just like Java, C++, and Javascript. (Yes, I'm using
 JS as part of my argument.)
 
 If you have
 method ( Int foo ) {
 .otherMethod( foo );
 }
 
 That would be
 method ( Int foo ) {
 $_.otherMethod( foo );
 }
 
 Just like expected.
 
 Rob


S27 Draft

2005-04-12 Thread Brian Ingerson
I've taken a shot at starting a Synopsis 27 as well:

http://svn.openfoundry.org/pugs/docs/S27draft.pod

Cheers, Brian


S26 Draft

2005-04-10 Thread Brian Ingerson
Per autrijus request, I have written a preliminary Synopsis 26 -- Perl
Documentation. For your ripping apart pleasures:

http://svn.openfoundry.org/pugs/docs/S26draft.pod

Cheers, Brian


Re: S26 Draft

2005-04-10 Thread Brian Ingerson
On 10/04/05 09:58 -0400, Aaron Sherman wrote:
 On Sun, 2005-04-10 at 14:02 +0300, Yuval Kogman wrote:
  Please don't be lazy, everyone, and look at this:
  
  http://svn.openfoundry.org/pugs/docs/
  
  There are some more drafts that should be reviewed, and more will
  probably follow.
 
 Can we please be rid of:
 
 http://svn.openfoundry.org/pugs/docs/advocacy/phd.png
 
 It's just rude, and Perl's public face should never be one of rudeness.

Applied, thanks.


Re: [Fwd: Re: [RFC] A more extensible/flexible POD (ROUGH-DRAFT)]

2005-03-17 Thread Brian Ingerson
On 17/03/05 00:49 -0500, Aaron Sherman wrote:
 On Wed, 2005-03-16 at 13:42 -0800, Brian Ingerson wrote:

 Well, look over AJS Kwid, and see what you think. The bullet syntax you
 give could work fine as a replacement for what I demonstrate, but I
 think everything else is pretty much 1:1. Now it's just a matter of: do
 you make it Wikiish or PODish?

Aaron,

I think AJS Kwid is fine if it fits your brain. It doesn't fit mine in
much the same way that Kwid doesn't fit yours, in much the same way that
Pod doesn't quite fit either of ours.

The interesting thing to me is that all 3 syntaxes map over the same
data model and thus are easily interchangable. The other interesting
thing is that all three could be supported without affecting the Perl5
or Perl6 syntax proper.

Sam mugwump Vilain refers to each of these syntaxes as /Pod dialects/.
He is working on more formally defining the common model or AST that
these dialects map to.

Given that, I am going to continue working on the Kwid dialect and
developing the Kwid tools I have started. The ideas in AJS Kwid seem too
different to incorporate without muddying the Kwid vision. I encourage
you work on the AJS Kwid dialect too. I would guess that the Kwid tools
I'm working on, when completed, could be easily adapted to AJS Kwid.

Cheers, Brian

PS All my work thus far is available in the pugs repository.


Re: s/true/better name/

2005-03-17 Thread Brian Ingerson
On 17/03/05 04:40 +0800, Autrijus Tang wrote:
 On Wed, Mar 16, 2005 at 12:09:40PM -0800, Larry Wall wrote:
  whereas as a native English speaker would probably expect
  
  $x = whether($a or $b);
  
  So I'm thinking we'll just go back to true, both for that reason,
  and because it does syntactically block the naughty meaning of true as
  a term (as long as we don't default true() to $_), as Luke reminded us.
 
 But true() reads weird, and it does not read like an unary (or list)
 operator at all to me. As the bikeshedding is still going on, may I
 suggest aye()?  It is the same length as not(), both are adverbs,
 and is rare enough to not conflict with user-defined subs.

'Tis a pity nobody suggested `tis()`.

Cheers, Brian


Re: [Fwd: Re: [RFC] A more extensible/flexible POD (ROUGH-DRAFT)]

2005-03-16 Thread Brian Ingerson
On 16/03/05 12:00 -0500, Aaron Sherman wrote:
 On Tue, 2005-03-15 at 13:48, Brian Ingerson wrote:
  Aaron,
  
  Upon reading this, it is unclear to me whether you have read about the
  Kwid format or you are simply guessing that Kwid is the same syntax
  used by Kwiki.
 
 I read the Kwid documentation from the Pugs distribution in depth.
 
 To create Kwid I carefully studied the POD information model
 (the semantic tree that POD parses to). Kwid uses the exact same
 info model. This means that switching between the two without
 loss of information is possible.
 
 I noted that in my original message.
 
 This makes the Kwid experiment much less risky
 
 Risk was not my concern. My concern was a Wiki-like model which is
 inconsistent with many of the goals of POD. POD is intended to be PLAIN
 OLD documentation. 

I think consistency with goals is fine, but consistency with the data
model is more important. POD has a very nice data model that maps well
to other formats. It is really well done. So logic stands that any
format which can map cleanly to POD and yet offer an advantages to the
author is a benefit to the author without needing to retool the
extensions. Further any dialect can be converted to any other without
information or structure loss.

POD's syntax is certainly good enough, but doesn't match the way that 
people commonly write structured prose; especially in this era of text
based formatting such as in wikis. POD's syntax /elegance/ also tends to 
break down into workarounds too fast in edge cases. 

NOTE: POD does have some minor warts in the data model, but they can be
  fixed later on.

 Kwid breaks this model of simplicity by introducing unique boundary
 characters for many types of operations, and by making the overall
 presentation more complex.

Let's look at an example and explore the rationale:

Pod uses this syntax Bbold stuff which is fine, but it is a very
common idiom to use *bold stuff* outside of Pod. Usenet posts, email,
irc, etc. People use this, they grok it, and lots of tools grok it as
well. (I'm thinking irc clients as an example).

So how do we get *there* formally and avoid making a mess where * is
just supposed to be an asterisk?

Kwid does this by formally changing
 
   X...

into

   {X...X}

Where `X` is any Pod code like `B`, `I` or `C`. Since there are only 3
codes in common use (ignore `L` for a second), Kwid thus uses {*bold*}
{/italic/} and {`code`}.

This has a subtle but significant advantage over X The difference
is that instead of the ending marker being '' it is 'X}', which is
orders of magnitude less likely to show up in the content being escaped.
This means you avoid the X ...  mess almost entirely.

But the better part of this is that the Kwid forms can be relaxed to
drop the curlies in most cases. This technique uses the principle of
hugging. So you can say *$a = $b * $c* and get the bolded equation
since the middle * isn't hugging anything. Hugging is a nontrivial
heuristic, but let's just say it Does The Right Thing. And if you aren't
sure just say {*$a = $b * $c*}. ie, just add some curlies to what you
already have.

*Bold* and /italics/ are rather obvious, intuitive and commonly used.
Backticks for `code` was chosen because backticks are rarely used in
code. Except of course when writing about Kwid itself. But to get
C`code` you just go to the curlies: {``code``}. Simple. Backticks also
seem to be right visually, but that's just my opinion.

For L..., I decided to use the very common wiki idiom of [...] for a
link. Everything in the `...` is the same as Pod.

I is purely subjective whether Kwid's overall presentation is more or
less complex than Pod's. Kwid attempts to elegantly move towards the
modern internet era of social software, with the hope that those
participating in those arenas might feel more at home.

 While I appreciate several features of Kwid, I feel that it should not
 replace POD without first adopting a POD-like simplicity.
 
 Some people have argued that Kwid is only a syntactic change to
 Pod. I would argue that they are correct.
 
 They are demonstrably wrong. You cannot Parse Kwid correctly by changing
 the syntax of a POD parser.
 
 For example, the behavior of
 
   * foo
   bar

The behaviour of this is completely consistent. You may need to reread the 
perlkwid document for it has recently changed.

ie

* foo
bar
* baz
boom

matches

* foo bar
* baz boom

matches

.list
* foo bar
* baz boom
.list.

The explicit `.list` is only needed when the parser cannot guess from
the context.

...

I would encourage those interested in further fleshing out Kwid to join
irc://irc.freenode.net/#kwid where all of this is actively being
discussed.

Cheers, Brian


Re: [Fwd: Re: [RFC] A more extensible/flexible POD (ROUGH-DRAFT)]

2005-03-16 Thread Brian Ingerson
On 16/03/05 13:30 -0500, Aaron Sherman wrote:
 On Wed, 2005-03-16 at 12:25, David Storrs wrote:
 
  I quite like  as the bracketing characters.  They are
  visually distinctive, they connect well with their adjacent C/X/L/etc
  without visually merging into it (compare Lfoo with L[foo]), and in
  the circumstance that you want to bracket an unbalanced bracket, you
  just double (triple, whatever) up and add some space:
  
   C  $x  $y  
  
  Looks pretty clear to me.
 
 You are confusing aesthetics with usability. Yes, the above looks clear,
 but then I have to type C  and   just to tell the POD parser
 that there might be unbalanced  or  characters in my string. You're
 failing to apply Larry's rules of Perl 6. Huffman and the easy things
 easy, while hard things are possible principles demand that a common
 case not require copious extra gunk, and noting could be simpler than:
 
   C[$x  $y] is about as B[easy] as it gets in [Perl]
 
 vs:
 
   C $x  $y  is about as Beasy as it gets in L[Perl|perl]
 
 without going full Wikish:
 
   [=$x  $y] is about as *easy* as it gets in [Perl]

vs Kwid:

`$x  $y` is about as *easy* as it gets in [Perl]

Did you really read `perlkwid.kwid`? There is simply no mention
of `[=...]` as a markup option, which makes me wonder where you
got it from?

 However, saving a couple of keystrokes and cleaning up the above text is
 inconsequential compared to the massive savings in terms of taking
 advantage of the legions of people who are learning Wiki syntax these
 days. Making POD *more* Wiki-like without sacrificing useful features of
 POD is invaluable in terms of tech writers and other
 non-Perl-programmers writing useful docs in POD!

Well said!

Cheers, Brian 


Re: [Fwd: Re: [RFC] A more extensible/flexible POD (ROUGH-DRAFT)]

2005-03-16 Thread Brian Ingerson
On 16/03/05 14:33 -0500, Aaron Sherman wrote:
 On Wed, 2005-03-16 at 14:17, Brian Ingerson wrote:
 
  Kwid does this by formally changing
   
 X...
  
  into
  
 {X...X}
 
 Ok, where is THAT proposal?! I'm reading the doc that's in
 doc/perlkwid.kwid in the pugs source tree. Hmmm... odd, I just did an
 update and it's GONE now... was I looking at some phantom doc that had
 an old spec for Kwid?!

Sorry, it has been moved around the pugs source tree a bit. It is
currently swinging from the documentation branch:

ext/Pugs-Documentation/perlkwid.kwid

  Where `X` is any Pod code like `B`, `I` or `C`. Since there are only 3
  codes in common use (ignore `L` for a second), Kwid thus uses {*bold*}
  {/italic/} and {`code`}.

FYI, it turns out that at least one modern format,
[Markdown|http://daringfireball.net/projects/markdown/syntax], uses
backticks for code. Markdown doesn't really map to the Pod space very
well, but it has a few gems...

 Well, I'm personally not fond of the bare-bracketting with {}, but as
 long as it's not a stand-alone /italic/ like it was in the original doc,
 that sounds fine. Why {/foo/} is more readable than I[foo], I'm not
 sure... but I'll try to take your word for it.

In short you don't need to worry about I[[ $foo[3] ]]. Since the ending
marker is '/}', you only ever need to worry about escaping anything but
'/}' itself. I might as well show how that would be done:

{/foo \/} bar/}
{{/foo /} bar/}}
{/foo { /} } bar/}

Those are 3 possible ways to make Ifoo /} bar. Note that '{ ' and ' }'
are the asis or leave me alone indicators. But the real point is
that '/}' is rather unlikely to ever show up in italics outside this
discussion.

  For L..., I decided to use the very common wiki idiom of [...] for a
  link. Everything in the `...` is the same as Pod.
 
 There, I think you're making a small mistake, but not a huge one. I'd
 separate out magical wiki-like [foo] from pedantic, pod-like L[foo] so
 that you can get either one. Wiki's [foo] is like a URN, where POD's
 L[foo] is more in tune with a relative URL.

So I will give a little extra info on this...

The idea is to DWIM and there is a lot you can do with the `[...|.../...]`
syntax. Pod's strict syntax is:

Ltext|resource/section

/Text/ is obviously the text that should render. /Resource/ can be a
local manpage (ie another Pod document) and then /section/ is a section
in that doc. If /resource/ is empty, the current document is assumed.

/Resource/ can also be a fully qualified url and in that case section
does not apply.

For some reason Pod does not allow Ltext|url but there seems to be no
obvious reason. (This is the the only major thing where Kwid strays from
Pod's info model).

I am not certain what use case `L[...]` could get you that isn't already
covered by `[...]`.

   While I appreciate several features of Kwid, I feel that it should not
   replace POD without first adopting a POD-like simplicity.
   
   Some people have argued that Kwid is only a syntactic change to
   Pod. I would argue that they are correct.
   
   They are demonstrably wrong. You cannot Parse Kwid correctly by changing
   the syntax of a POD parser.
 
  The behaviour of this is completely consistent. You may need to reread the 
  perlkwid document for it has recently changed.
 
 Apparently.
 
  ie
  
  * foo
  bar
  * baz
  boom
  
  matches
  
  * foo bar
  * baz boom
  
  matches
  
  .list
  * foo bar
  * baz boom
  .list.
 
 Hrm...
 
 How, then do you differentiate:
 
   * Bullet list.
   1. Numbered list.
   Other
   Term/definition lists
 
 ? In POD, that would be:
 
   =item *
 
   Bullet list
 
   =item 1
 
   Numbered list.
 
   =item Other
 
   Term/definition lists

This makes no sense in html and perlpod says:

   *   And perhaps most importantly, keep the items consistent: either
   use =item * for all of them, to produce bullets; or use
   =item 1., =item 2., etc., to produce numbered lists; or use
   =item foo, =item bar, etc. -- namely, things that look
   nothing like bullets or numbers.

In Kwid, therefore, this:

* Bullet list.
+ Numbered list.
- Other
Term/definition lists

would produce 3 single item lists. You can obviously switch types in sublists:

* Bullet list.
++ Numbered list.
* another bullet
-- Other
Term/definition lists

  I would encourage those interested in further fleshing out Kwid to join
  irc://irc.freenode.net/#kwid where all of this is actively being
  discussed.
 
 Sorry, no access to IRC at work. If the specification of core pieces of
 P6 are being done off-list, why is there a list?

Honestly this project was started as an /experiment/ and was not
intended to distract p6l. Kwid requires no extra input from the language
side as long as:

=kwid
...
=cut

is ignored by the interpreter. This turns out

Re: [Fwd: Re: [RFC] A more extensible/flexible POD (ROUGH-DRAFT)]

2005-03-16 Thread Brian Ingerson
On 16/03/05 14:56 -0500, Aaron Sherman wrote:
 On Wed, 2005-03-16 at 14:24, Brian Ingerson wrote:
 
  vs Kwid:
  
  `$x  $y` is about as *easy* as it gets in [Perl]
  
  Did you really read `perlkwid.kwid`? 
 
 Yes, and can you please stop asking that question? I read it several
 times, and you're starting to get just this side of insulting. If I got
 something wrong, fine, say so. Stop trying to dismiss everything else
 I've said by suggesting that I'm completely uninformed.

Aaron, /please/ take no offense. I just don't understand where you
picked `[=...]` up other than that is the (hated) syntax artifact of the
original `CGI::Kwiki`. I don't recall ever using it in regards to Kwid.
I'm sure there's a reasonable explanation. :)

  There is simply no mention
  of `[=...]` as a markup option, which makes me wonder where you
  got it from?
 
 
 I got it from that document or so I thought. Since it's now deleted,
 I'm no longer sure. Having a reference again would be nice. It's hard to
 have a conversation about a document that does not exist.

In my first mail of the thread I pointed to it:

http://svn.openfoundry.org/pugs/ext/Pugs-Documentation/perlkwid.kwid

As I said in my last mail, it has moved around a bit, so pardon our dust.

 Ok, that said PLEASE DO NOT USE UNBALANCED CHARACTERS TO DELIMIT!
 Please, for the love of all that is valid input to any scanner / parser
 anywhere, do not re-introduce quoting hell. Really. Please. Don't. I'll
 buy you a beer. I swear, just put the unbalanced operator down and step
 back.

A beer is tempting...

 Sorry, but I use POD specifically because it makes my life simple.
 Introducing unbalanced quotes into it would remove that functionality. A
 few examples:
 
   And then I says, `Mabel,' I says, `shut up.'
 
   The ``` character is no longer used.
 
 And of course, TONS of Gnu documentation which uses the TeX-friendly:
 
   This is the way you ``quote'' things.

No problem with this example. `` doesn't /hug/ anything so it shows up
asis. Cutting and pasting LaTeX doesn't mess anything up in this regard.
But really, you'll likely refactor it to:

This is the way you quote things.

Since `` and '' don't do anything for you in either Pod or Kwid.

Cheers, Brian


Re: [Fwd: Re: [RFC] A more extensible/flexible POD (ROUGH-DRAFT)]

2005-03-15 Thread Brian Ingerson
Aaron,

Upon reading this, it is unclear to me whether you have read about the
Kwid format or you are simply guessing that Kwid is the same syntax
used by Kwiki.

It is not the same format at all. Kwid is merely /inspired/ by Kwiki,
which in turn is inspired by the (more usenix) features of modern wiki
languages. It is more fair to say that Kwid is much more inspired by Pod
than Kwiki.

Please read what is considered to be the de facto spec:
http://svn.openfoundry.org/pugs/ext/Pugs-Documentation/perlkwid.kwid
carefully and recomment.

A few notes. 

To create Kwid I carefully studied the POD information model (the
semantic tree that POD parses to). Kwid uses the exact same info model.
This means that switching between the two without loss of information
is possible.

This makes the Kwid experiment much less risky, since it will be trivial to
convert in either direction.

As to the syntax, care has been taken to ensure that all the corner
cases are covered. And also covered elegantly.

Some people have argued that Kwid is only a syntactic change to Pod. I
would argue that they are correct. :) But this does not mean it is not
an important change. Kwid has an emphasis on minimizing the markup, and
using the markup one might use to discuss programming in everyday email.
This is hard to do in POD, but very easy to do in Kwid. Thus a bug win.

It is also wrong to imply that important semantic changes cannot be made
in the future. Things like introspection and transclusion. But that is
not the current concern. 

In reality, Kwid does vary ever so slightly in semantics from POD. But only in
cases where POD seemed to have a wart. For instance Kwid allows named
hyperlinks: [The Pugs Source|http://svn.openfoundry.org/pugs]. 

Cheers, Brian

On 15/03/05 11:46 -0500, Aaron Sherman wrote:
 Wherein I propose (to the wrong list, sigh) a re-envisioning of Kwid in
 a more POD-like form.
 
 I did leave out some POD markup forms. Assume that, if I did not mention
 them, then I think they should keep the same prefix character (e.g. X)
 

Content-Description: Forwarded message - Re: [RFC] A more extensible/flexible 
POD (ROUGH-DRAFT)
 From: Aaron Sherman [EMAIL PROTECTED]
 Date: Tue, 15 Mar 2005 11:43:39 -0500
 To: Stevan Little [EMAIL PROTECTED]
 Cc: perl6-compiler@perl.org
 Subject: Re: [RFC] A more extensible/flexible POD (ROUGH-DRAFT)
 X-Mailer: Ximian Evolution 1.4.6 (1.4.6-2) 
 
 On Tue, 2005-03-15 at 09:37, Stevan Little wrote:
  On Mar 15, 2005, at 12:54 AM, Nigel Hamilton wrote:
 
 There is a need for a higher level 'structural' documentation that 
   hypertext is well suited to cover - something that spans more than one 
   module. This will be especially important for CPan6 and connecting 
   versions, and modules into bigger 'packages'.
  
  Agreed as well. It would be nice if CPAN6 or CP6AN or FreePAN (or 
  whatever it will eventually be called) have a more sophisticated 
  linking/documentation system which goes beyond the actual single 
  module. I even think this would be possible in the current CPAN if we 
  could get the L construct fixed, but that is another issue.
 
 Actually, I don't think that's at all another issue. It's the core of
 what you're talking about. L gives you the ability to link, and in
 several different ways. It's also broken in Perl 5, which makes a
 replacement sound attractive, but fixing it solves for much of that
 need.
 
 Taking a cue from the wiki world makes sense to me. Kwid is almost ideal
 as far as I can tell in that it:
 
 a) Does everything POD does
 b) Is backward compatible with Perl 5 in that it can be ignored by the
 parser in the same way.
 c) Makes many things easier
 
 Now, it does need some tweaking, I think, but nothing too severe. It
 just makes a few things harder, and a few other things non-POD-like for
 no particular reason. I like CPOD for the ease of including keywords
 in Cperl documentation. It's also Btrivial to Irecognize all
 markup quickly (visually or programmaticly).
 
 Kwid /on the other hand/ makes it a bit harder to [=find] that markup,
 and is *thus* not quite as easy to de-parse visually.
 
 I'd be thrilled if we just changed the .-introduced things to
 =-introduced things:
 
   = heading level 1
   == heading level 2
   =begin list
   * You don't really need the begin
   * But it doesn't hurt
   * and it allows
   some(code())
   to appear inside a list item.
   * Hmmm
   =end list
 
 And then replaced [...] and [=...] and /.../ and *...* with their more
 POD-like: L[...], C[...], I[...] and B[...] with a bare [foo] working as
 a I have no idea what I'm linking to, but do the right thing sort of
 wikiness, where L[...] is a more structured, POD-like link. For example:
 
 = Proposed Kwid Changes
 == Introduction
 It is my I[goal] to introduce an easier to use (for [POD] users)
 version of [Kwid], and impose it B[mercilessly] on the heathen
 masses!
 

Config Variables

2005-03-03 Thread Brian Ingerson
Hi all,

I'm hacking on pugs. I've added a Config.hs which is generated from the
build system's perl's Config.pm. This allows me to expose the Perl6 magical
variable $?OS.

There are a lot of other config values that seem like they don't really need
their own global. Things like 'privlib' and 'installsitearch'.

How about a config hash %?CONFIG for these.

%?CONFIG{'privlib'}
%?CONFIG{'installsitearch'}

Or would %*CONFIG be better?

Cheers, Brian


Re: Config Variables

2005-03-03 Thread Brian Ingerson
On 03/03/05 11:25 -0800, Larry Wall wrote:
 On Thu, Mar 03, 2005 at 09:30:03AM -0800, Brian Ingerson wrote:
 : Hi all,
 : 
 : I'm hacking on pugs. I've added a Config.hs which is generated from the
 : build system's perl's Config.pm. This allows me to expose the Perl6 magical
 : variable $?OS.
...
 In fact, what I think we're dealing with are lots proxies for different
 software and hardware objects.  In fact, $?OS probably shouldn't return
 the OS name.  It should return an object describing the compiler's OS.
 We were starting to make some distinctions such that the name is
 
 $?OSNAME
 $*OSNAME

Larry,

At first I was overwhelmed by your reply, but it's soaking in... :)

My goal in the short term is to create an environment where regular
folks can start writing and installing and sharing Perl6 modules. It's
a lot of hacky work on various subsystems. And one thing I need is
config info.

Unfortunately, pugs has no object support yet. It probably will in the
next week or two. In the meantime I'll just wing it with an eye towards
the future.

Thanks for the mind expanding reply.

Cheers, Brian


use only The::Finest = 1.23;

2003-02-19 Thread Brian Ingerson
 AND CAVEATS
  *   There is currently no way to install documentation for multiple
  modules.
  
  *   This module only works with Perl 5.6.1 and higher. That's because
  earlier versions of Perl don't support putting objects in @INC.
  
  AUTHOR
  Brian Ingerson [EMAIL PROTECTED]
  
  COPYRIGHT
  Copyright (c) 2003. Brian Ingerson. All rights reserved.
  
  This program is free software; you can redistribute it and/or modify it
  under the same terms as Perl itself.
  
  See http://www.perl.com/perl/misc/Artistic.html
  



Re: In defense of zero-indexed arrays.

2002-12-06 Thread Brian Ingerson
On 05/12/02 02:45 -0800, Michael G Schwern wrote:
 I'm going to ask something that's probably going to launch off into a long,
 silly thread.  But I'm really curious what the results will be so I'll ask
 it anyway.  Think of it as an experiment.
 
 So here's your essay topic:
 
 Explain how having indexes (arrays, substr, etc...) in Perl 6 start at 0
 will benefit most users.  Do not invoke legacy. [1]

With languages like Perl that have negative subscripts, using a zero
base gives continuity. @INC[-2..2] should continue to DWIM.

Cheers, Brian



Re: Supercomma! (was Re: UTF-8 and Unicode FAQ, demos)

2002-11-04 Thread Brian Ingerson
On 04/11/02 17:52 -0800, [EMAIL PROTECTED] wrote:
 [Note to all: yes, this is me, despite the weirdities of the quoting
 and headers.  This is how it looks when I using mutt out of the box,
 because I haven't yet customized it like I have pine.  But I do like
 being able to see my own Unicode characters, not to mention everyone
 else's.  If you don't believe this is me, well, I'll just tell you that
 I live on a tropical island near Antarctica, my social security number
 is 987-65-4321, and my mother's maiden name was the same as my maternal
 grandfather's maiden name.  Or something like that...  --Ed]

Mutt?

I'm using mutt and I still haven't had the privledge of correctly viewing one
of these unicode characters yet. I'm gonna be really mad if you say you're
also using an OS X terminal. I suspect that it's my horrific OS X termcap
that's misbehaving here.

Aargh!

Brian

 
 On Mon, Nov 04, 2002 at 02:25:08PM -0800, Michael Lazzaro wrote:
  On Monday, November 4, 2002, at 11:58  AM, Larry Wall wrote:
  You know, separate streams in a for loop are not going to be that
  common in practic, so maybe we should look around a little harder for
  a supercomma that isn't a semicolon.  Now *that* would be a big step
  in reducing ambiguity...
  
  Or more than one type of supercomma, e.g:
  
 for @x I @y I @z - $x I $y I $z { ... }
  
  to mean:
 for @x ; @y ; @z - $x ; $y ; $z { ... }
 
 That almost works visually.
 
  - vs -
  
 for @x § @y § @z - $x § $y § $z { ... }
  
  to mean:
  
 for @x - $x {
   for @y - $y {
 for @z - $z {
   ...
 }
   }
 }
  
  ;-)
 
 Glad you put the smiley.  I think the latter is much clearer.
 
 But at the moment I'm thinking there's something wrong about any
 approach that requires a special character on the signature side.
 I'm starting to think that all the convolving should be specified
 on the left.   So in this:
 
 for parallel(@x, @y, @z) - $x, $y, $z { ... }
 
 the signature specifies that we are expecting 3 scalars to the sub,
 and conveys no information as to whether they are generated in parallel
 or serially.  That's entirely specified on the left.  The natural
 processing of lists says that serial is specified like this:
 
 for @a, @b, @c - $x, $y, $z { ... }
 
 Of course, parallel() is a rotten thing to have to say unless you're
 into readability.  So we could still have some kind of parallizing
 supercomma, mabye even P (U+2225 PARALLEL TO).  But let's keep it
 out of the signature, I think.  In other words, if something like
 
 for @x P @y P @z - $x, $y, $z { ... }
 
 is to work, then
 
 @result = @x P @y P @z;
 
 has to interleave @x, @y, and @z.  It's not special to the Cfor.
 In the case of Cfor, of course, the compiler should feel free to
 optimize out the actual construction of an interleaved array.
 
 I suppose it could be argued that P is really spelled »,« or some such.
 However,
 
 @result = @x »,« @y »,« @z;
 
 just doesn't read quite as well for some reason.  A slightly better
 case could be made for
 
 @result = @x `|| @y `|| @z;
 
 The reason we originally munged with the signature was so that we
 could do weird things with differing numbers of streams on the left
 and the right.  But if you really want a way to take 3 from @x, then
 3 from @y, then 3 from @z, there should be something equivalent to:
 
 for round_robin_by_3s(@x, @y, @z) - $x, $y, $z { ... }
 
 Fooling around with signature syntax for that rare case is not worth it.
 This way, the Cfor won't have to know anything about the signature other
 than that it expects 3 scalar arguments.  And Simon will be happ(y|ier)
 that we've removed an exception.
 
 Ed, er, Larry



utf and ebcdic

2002-11-04 Thread Brian Ingerson
On 04/11/02 12:12 -0800, [EMAIL PROTECTED] 
aka Larry Wall wrote:
  If you want trigraph support, you'll have to put 
  
  use encoding 'ugly-american';
  
  at the top of your files. ;-) ;-) ;-)
  
  Otherwise, it'll be one-character ?fancyops? all the way.
 
 Mmm, I view one-character Unicode operators as more of an escape hatch
 for the future, not as something to be made mandatory.  But then,
 I'm one of those ugly Americans.
 
 Of course, I also think I'm allowed to be a little inconsistent in
 forcing things like »op« on people.  After all, there's gotta be
 some advantage to being the Fearless Leader...

On one hand I really respect your fearlessness to go where no language
author has gone before. No matter what happens, I pretty sure you'll be
remembered for it. ;)

On the other hand I'm wondering what happens to the ebcdic platforms and
the like. Will it even work to have core modules written in non ascii
and expect them to translate to ebcdic? I suppose you'll have to convert
them to trigraphs as part of the installation. Just wondering if you've
thought through the support issues for platforms that by their
definition won't be using utf ever.

FWIW, ebcdic *does* have the cent sign!

Cheers, Brian



Re: UTF-8 and Unicode FAQ, demos

2002-11-04 Thread Brian Ingerson
On 04/11/02 14:09 -0800, Austin Hastings wrote:
 
 --- Rafael Garcia-Suarez [EMAIL PROTECTED] wrote:
  Austin Hastings wrote in perl.perl6.language :
   
   What we've got is an encoding problem at the MUA level. Mark Reed
  says
   my mailer (Yahoo!) tagged a message containing high-bit characters
  as
   US-ASCII. Several people the other day reported on the differences
  in
   UTF8 vs. Latin-1 handling among pine, elm, and other mailers.
  
  Not only the MUA level. Usually source code is written in a lowest
  common denominator of ascii, even for languages that allow unicode
  identifiers (Java) or markup. That's because source code is handled
  by
  parsers, documentation extractors, pretty printers, diff(1),
  patch(1),
  version control software, and (you said it) various internet clients.
 
  That's why some people may still prefer to continue using pure ascii
  even though then think that unicode operators are cool. (Esp. if they
  are under the influence of FUD : use PHP ! it's ascii compliant !)
 
 Yeah, but ActiveState does Perl, and Microsoft owns ActiveState, so
 we've got the kings of FUD on our side for a change. Joy.

Speaking of FUD, that's simply not true, nor tasteful IMO.

AS has done a handful of short-term contacts for MS, and that's the
extent of their relationship.

FWIW, AS also does as much or more Unix development as Windows
development. They also employ some people who have individually
advanced Perl more than you'll ever know.

   Perl6 will do more to address the real technical issues of
  electronic
   communication between Americans and French-speakers than anything
  else.
   (Primarily because Perl hackers want to talk to each other, but no
   French-speaker wants to talk to an American ;-)
  
  You're Italian, aren't you ?
 
 Actually, an American who's been ignored in many places. :-)
 
 =Austin
 
 
 __
 Do you Yahoo!?
 HotJobs - Search new jobs daily now
 http://hotjobs.yahoo.com/



Re: [RFC] Perl6 Operator List, Take 5

2002-10-30 Thread Brian Ingerson
On 30/10/02 15:33 -0500, Mark J. Reed wrote:
 On 2002-10-30 at 12:23:53, David Wheeler wrote:
  This tells me that Mail.app, for some reason, didn't know that it was 
  supposed to use UTF-8 when showing Larry's mail. When I pasted his mail 
  into a UTF-8 document in Emacs, it looked fine.
  
  Given that it's probably UTF-8 that Perl 6 source code is written in, I 
  think that you and I might be better off using a smarter mailer.
  
  David
 Larry's mail was *marked* as UTF-8, but by the time I got it it
 had no French quotes in it in UTF-8, Latin-1, or any other encoding anymore.  
 My mailer understand UTF-8 just fine, and so does vim (which I used to
 look at my spool file to check for encoding oddities); in my copy of his
 message, there's just nothing there.  All I can think is that some MTA
 along the way - possibly our very own Exchange server - stripped them out.

Wait. So you mean that a French quote isn't a question mark?

I take back all those things I've said about the French in the last 24 hours.

Cheers, Brian



Re: [RFC] Perl6 Operator List, Take 5

2002-10-30 Thread Brian Ingerson
On 30/10/02 13:41 -0800, David Wheeler wrote:
 On Wednesday, October 30, 2002, at 01:35  PM, Graham Barr wrote:
 
  On Wed, Oct 30, 2002 at 01:25:44PM -0800, Austin Hastings wrote:
  --- Larry Wall [EMAIL PROTECTED] wrote:
 
  Do these French quotes come through?
 
  @a «+» @b
 
  Odd, I see them in this message. But In the message from Larry I see 
  ?'s
 
 And I didn't see them in Austin's message, but I see them in yours. 
 Your mailer did the right thing, it looks like.

And I see white question marks over black diamonds on a white background. Of
course the OS X termcap is imfamous.

Cheers, Brian



Re: Persistance of superpositions?

2002-10-29 Thread Brian Ingerson
On 29/10/02 16:05 -0500, Buddha Buck wrote:
 I was wondering...
 
 How persistant are superpositions?  How pervasive are they?

Speaking of persistence, I just realized I'll need to start thinking about
YAML serializations of superpositions. My first cut at it would be:

---
letters: !super [0, 1, 2]
digits: !super
  - 0
  - 1
  - 2
...

Cheers, Brian



Re: Wh[ie]ther Infix Superposition ops

2002-10-29 Thread Brian Ingerson
On 29/10/02 14:47 -0500, Dan Sugalski wrote:
 At 10:22 AM -0800 10/29/02, Michael Lazzaro wrote:
 This is why I am nervous about introducing terms like eigenbunny, etc.
 
 Oh, I dunno, I kind of like it. Of course, now my kids want 
 eigenbunny slippers... (Though the trouble with those is they may or 
 may not be keeping your feet warm--you can never tell)

Oh! I just remembered the ultimate word for a container. It's cozy, of
course!

Every eigenbunny needs a supercozy!

Cheers, Brian



Re: Persistance of superpositions?

2002-10-29 Thread Brian Ingerson
On 29/10/02 13:26 -0800, Brian Ingerson wrote:
 On 29/10/02 16:05 -0500, Buddha Buck wrote:
  I was wondering...
  
  How persistant are superpositions?  How pervasive are they?
 
 Speaking of persistence, I just realized I'll need to start thinking about
 YAML serializations of superpositions. My first cut at it would be:
 
 ---
 letters: !super [0, 1, 2]

  letters: !super [a, b, c]

even!

Cheers, Brian



Re: Wh[ie]ther Infix Superposition ops

2002-10-29 Thread Brian Ingerson
On 29/10/02 09:58 -0800, Larry Wall wrote:
 On Tue, 29 Oct 2002, Jonathan Scott Duff wrote:
 : On Tue, Oct 29, 2002 at 10:13:39AM +0200, Markus Laire wrote:
 
 So I would look favorably on finding a replacement for superposition.

How about christmasgift or gift? 

You don't know what it is until you open it. It could be any, all or none of
what you expected.

How about envelope? (noun)

Or better yet pocket. What has it gots in its pocketses my precious?

To keep that QM feel you could call it a hotpocket.

Cheers, Brian



Re: Persistance of superpositions?

2002-10-29 Thread Brian Ingerson
On 30/10/02 08:36 +1100, Damian Conway wrote:
 Brian Ingerson wrote:
 
  Speaking of persistence, I just realized I'll need to start thinking about
  YAML serializations of superpositions. My first cut at it would be:
  
  ---
  letters: !super [0, 1, 2]
  digits: !super
- 0
- 1
- 2
  ...
 
 Not quite. You also need to discriminate the *type* of the superposition:

Oh right. I was thinking that Cany and friends were operations, not types.
Oops.

YAML type-URIs are made up of a type-family with an optional format:

!domain.com/type#format

and:

!int

is shorthand for:

!yaml.org/int#dec

So I'm wondering if any|all|one|none can be formats of !super? And if so,
should there be a default format?

letters: !any [0, 1, 2]
digits: !all
  - 0
  - 1
  - 2
names: !one [Brian, Ingy, Mr Inline]
sane: !none
  - Larry
  - Damian
  - Brian
...

Here are some options:

---
# !yaml.org/any
letters: !any [a, b, c]

# !yaml.org/super#all
digits: !super#all
  - 0
  - 1
  - 2

# !perl.yaml.org/one (Perl specific types)
names: !perl/one [Brian, Ingy, Mr 
  Inline] # (Yes, this dwims :)

# !perl.yaml.org/super-none  (longer type name, no format)
sane: !perl/super-none
  - Larry
  - Damian
  - Brian
...

It might be more forward thinking to allow any|all|one|none into the
yaml.org type repository.

!perl/glob is staying right where it is, thank you ;)

Cheers, Brian



Fw: [Yaml-core] Summary of the IRC session

2002-09-06 Thread Brian Ingerson

This is an interesting tidbit from a longer posting by Oren Ben-Kiki, the
YAML specification author. Thought I'd pass it on.

- Forwarded message from Oren Ben-Kiki [EMAIL PROTECTED] -

From: Oren Ben-Kiki [EMAIL PROTECTED]
Date: Thu, 5 Sep 2002 11:28:12 +0300
To: [EMAIL PROTECTED]
Subject: [Yaml-core] Summary of the IRC session
X-Mailer: Internet Mail Service (5.5.2653.19)



- I'm impressed by the fact that this is almost identical to Perl's type
system - and we arrived at it independently. Either Larry Wall was extremely
lucky, he had a working crystal ball that told him this type system would be
good for Yaml, or this approach is right in some deep way (for scripting
languages) and he merely arrived at it as an inevitable result. Of
course this made our life easier because we had it in front of us, while he
more-or-less invented it from scratch (AFAIK).

I don't want to start a language war here or anything, and Parrot is
supposed to run Python and Ruby programs as well anyway... I'm just rather
surprised by this result. If you would have asked me a year back my bet
would have been that we'd end up being more traditional and Perl would be
the odd man out. In fact when I first encountered bless I thought it was
a horrible hack; now I want to bless Larry for getting it right.

Either way, YAML makes a *perfect* fit for Parrot now. Way to go!





Re: New vtable methods

2002-08-19 Thread Brian Ingerson

On 18/08/02 16:06 -0400, Dan Sugalski wrote:
 Okay, here's two new vtable methods
 
freeze(PMC) - Responsible for freezing a PMC to the current freeze 
 data stream. Throws an exception on error
 
thaw(PMC) - A class method that thaws a PMC from the current thaw data stream
 
 Both of these should use the freeze/thaw API--I'll get that defined 
 and out shortly.

If I want to provide YAML serialization support at the Parrot level, would I
be able to simply override these methods?

Cheers, Brian



PATCH - Allow assemble.pl to read from STDIN

2002-08-01 Thread Brian Ingerson

Hi all,

I'm new to Parrot and Perl6. I hope this is an ok way to submit a patch.

---
- Allow assemble.pl to read from STDIN
- Use the '-' symbol to indicate STDIN
- Made invocation failures/usages behave more correctly
- Minor refactorings in this code section


Index: assemble.pl
===
RCS file: /cvs/public/parrot/assemble.pl,v
retrieving revision 1.82
diff -u -r1.82 assemble.pl
--- assemble.pl 18 Jul 2002 02:13:27 -  1.82
+++ assemble.pl 1 Aug 2002 09:25:00 -
 -1047,35 +1047,33 
 sub process_args {
   my ($args,$files) = _;
 
-  for (my $count = 0; $count  ARGV; $count++) {
-my $arg = $ARGV[$count];
-
+  while (my $arg = shift ARGV) {
 if($arg =~ /^-(c|-checksyntax)$/) { $args-{-c} = 1; }
 elsif($arg =~ /^-E$/) { $args-{-E} = 1; }
-elsif($arg =~ /^-(o|-output)$/)   { $args-{-o} = $ARGV[++$count]; }
-elsif($arg =~ /^-(h|-help)$/) { Usage(); }
-else {
-  push $files,$arg;
-}
-  }
-  unless($files) {
-print STDERR No files to process.\n;
-Usage();
+elsif($arg =~ /^-(o|-output)$/)   { $args-{-o} = shift ARGV; }
+elsif($arg =~ /^-(h|-help)$/) { Usage(); exit 0; }
+elsif($arg =~ /^-./)  { Fail(Invalid option '$arg'\n); }
+else  { push $files,$arg; }
   }
-  for($files) {
-next if -e $_;
-print STDERR File '$_' does not exist.\n;
+  Fail(No files to process.\n) unless($files);
+  Fail(File '$_' does not exist.\n) for grep { not (-e or /^-$/) } $files;
+}
+
+sub Fail {
+print STDERR _;
 Usage();
-  }
+exit 1;
 }
 
 sub Usage {
   print   _EOF_;
+
 usage: $0 [options] file [file...]
 
 -E  Preprocess input files and terminate processing
 -h,--help   Print this message
 -o,--output Write file 
 -c,-checksyntax Check syntax only, do not generate bytecode
+
   _EOF_
 }




Re: ANNOUNCE: Inline 0.23 (Mix Perl and C w/o XS)

2000-08-19 Thread Brian Ingerson

Sam Tregar wrote:
 
 On Fri, 18 Aug 2000, Graham Barr wrote:
  So it is a security issue then as it needs somewhere to cache these
  object files, and anyone must be able to do it.
 
 The place it stores its objects is configurable, so it's only a security
 problem if you make it one!  I'd say its more a configuration problem
 since you need to carefully think about where that place should be and set
 the appropriate permissions.

Again, extension modules using Inline install their executable code in
$Config{installsitearch} *only*. Only the sysadmin can install there,
presumably.

For normal users writing scripts, the executables will get installed
under the first one of the following places that is a valid directory
and is writable: 

 - $ENV{PERL_INLINE_BLIB}
 - $ENV{HOME}/.blib_I/
 - $ENV{HOME}/blib_I/
 - $bin/blib_I/
(where $bin is the script directory returned by FindBin.pm)
 - ./blib_I/
 - /tmp/blib_I/

If none of those exist, Inline will attempt to mkdir one of following:

 - $bin/blib_I/ 
 - ./blib_I/ 

Failing that, Inline will croak. Of course the user can directly specify
the install location as well, using Inline::Config.

I can see that /tmp/blib_I/ could be a security hole and should probably
be removed. Other than that it seems secure. If I'm missing something,
please let me know. (In detail)

Brian
[EMAIL PROTECTED]



Re: ANNOUNCE: Inline 0.23 (Mix Perl and C w/o XS)

2000-08-18 Thread Brian Ingerson

Hi all,

This is Brian Ingerson (the Inline.pm author). My coworker, Colin Meyer,
tipped me off to this thread. I thought I'd throw in a few tidbits to
make sure everyone's on track. But first of all, make sure to RTFM.
(Because I put a lot of effort in explaining it there) The latest copy
is:

http://search.cpan.org/doc/INGY/Inline-0.23/Inline.pod

Inline.pm is meant to be a reasonable alternative to XS. I thought of
the idea at the Conference, after one of Damian's Parse::RecDescent
talks. It is this module (and Digest::MD5) that make it possible.

As some of you have figured out, Inline takes a C source code string (or
file or snippet...) as an argument to a 'use' statement. An MD5 digest
fingerprint is taken of that source code and used to produce a unique
shared object name, such as:

main_C_example001_pl_3a9a7ba88a8fb10714be625de5e701f1.so

Then that module is searched for in one of several possible places
starting with the INSTALLSITEARCH directory of @INC. If it isn't found
then a build area is generated, a build performed, and the result is
DynaLoaded for immediate execution. The next time the script or module
is run, the shared object will already exist, and the code will just
run. If the C source is modified, the fingerprint will change, and the
object gets recompiled. Viola.

(NOTE: For speedy startup, the compile time stuff is AutoLoaded only
when a build needs doing.)

If the Inlined code is part of a distributed extension module, there is
a trick to make it compile into the './blib/' library during the "make
test" of the installation. Then, when "make install" is performed, the
shared object gets moved into the INSTALLSITEARCH part of @INC. See the
doc.

It is true that Inline only supports a minimal number of default
typemaps (void, int, long, double, char*, SV*). I don't intend to change
it without good reason. This is because these are the native types of
Perl scalars. Mapping anything else is a hack, IMO. These types allow
you to call C functions like you would call Perl subs. If you want to
pass other things like refs, then you need to do the mapping yourself.
This makes sense to me. That said, I could easily be convinced to start
a Inline::C::Typemaps helper class.

Here are some of Inline's strong points:
- Easy transition between Perl-space and C-space. (For Perl programmers)
- Elimination of the awareness of compiling. (as long as the code
compiles :-)
- Easier to maintain. (Less files)
- Reduction of the learning curve of XS. (For us mortals)
- Easy way to write high-performance extension modules.
- Works everywhere that Perl itself is compiled. (So far...)
- Intends to support other programming languages besides C.

Here are some faults:
- Doesn't scan header files to autogenerate a Perl API like XS does (But
how many times in ten does that work first-time anyway?)
- Very slow on MSWin32 using Visual C++.
- your complaint here


 No more insecure than having your own LIB directory, although the prospect of
 every user having their own copy of every C extension doesn't sound too
 great. Perhaps we can modify it so that it checks an @INC as normal.

Extension modules using Inline, always put their executable code in @INC
(INSTALLSITEARCH). And the build dir is always './blib_I'.

For developing with Inline, the most common place for Inline to create a
temporary build/install area is in the directory where the script
resides (using FindBin.pm) under the subdir 'blib_I'. Other choices
include '~/.blib_I', '$ENV{PERL_INLINE_BLIB}/blib_I', '/tmp/blib_I',
etc. Inline trys to do the most sensible thing. You can always specify
an exact location with Inline::Config.

 
 It's just an idea for us to play with - I'm by no means suggesting we want to
 use it as-is.

I'm flattered that you're considering it - I'm by no means intending to
leave it as-is. :-)

In parting, I'll be glad to answer any further queries, and would be
honored to work with you guys to turn this into something great for
Perl.

Brian Ingerson
[EMAIL PROTECTED]