"Luke Palmer" <[EMAIL PROTECTED]> wrote > Well, the IO-objects are iterators, and you use <$iter> to iterate. It > makes sense that <> would iterate over $*ARGV by default.
When I read this, I instinctively thought to myself: "why does this need to be global?". And that thought progressed to: "what is the signature of a main program?" When you start a perl program, you don't need a "main" function, but the program is a lexical scope from which you return. its just the "sub" declaration that is implicit: sub main::_([EMAIL PROTECTED]) returns int {...} or some such thing. Is this really the best signature we could use? Given that we want a ref to the array to be the default topic, perhaps the signature is: class main is program { has @.ARGV is rw; has %.ENV is rw; method _() returns int { ... } } We could then paste any number of program attributes into that class: %.ENV, $.STDIN, $.STDOUT, etc. Thing like $*IN would just be aliases to those attributes: @*ARGV := .ARGV; etc. If I stretch my imagination a little, I could even see user-code creating other instances of program you use in place of functions like system and exec. sub qw(Str $exe) { program.new( $exe ) as string } OK, maybe that's not quite what you'd want, but I you get the picture (I hope). Dave.