Aaron Sherman writes:
> Right off the bat, let me say that I've read A1-6, E7, A12, S3, S6, E1,
> E6 and much of this mailing list, but I'm still not sure that all of
> what I'm going to say is right. Please correct me if it's not.
Did you really need to ask me to? ;-)
> Perl 5:
>
> #!/usr/bin/perl
>
> while(<>) {
> s/\w+/WORD/g;
> print;
> }
>
> Perl 6:
>
> #!/usr/bin/perl
>
> while $stdin.getline -> $_ {
> s:g/\w+/WORD/;
> $stdout.print;
> }
It actually turns into:
for <> {
s:g/\w+/WORD/;
print;
}
Which looks and feels even more like Perl (and not like Java...). I'll
explain below.
> is it really that new and scary? The wonky old STDIO is probably going
> to go and get replaced with an IO::Handle like interface (I don't think
> that's final, but I recall it being said), but that's NOT new, it's just
> changing over to the long-established and removing the Perl3ish IO
> syntax.
Well, the IO-objects are iterators, and you use <$iter> to iterate. It
makes sense that <> would iterate over $*ARGV by default.
> The funky -> syntax replaces implicit $_ization of while parameters...
> good change IMHO.
It doesn't *replace* it. Actually, $_ becomes even more pervasive. In
a closure block like:
for @something -> $foo { ... }
BOTH $foo and $_ get bound to each element of @something. That just
means that $_ is always the current inner topic, as opposed to only when
you have another name for it.
> Other than that it's Perl as you've always known it. Any Perl 5
> programmer should be able to look it over and figure it out with perhaps
> just one or two hints.
>
> Ok, another:
>
> #!/usr/bin/perl
>
> use IO::Socket::INET;
> $n=IO::Socket::INET->new(LocalPort=>20010,Listen=>5);
> $n->listen();
> while(($s=$n->accept())){
> print <$s>;
> close $s;
> }
>
>
> Perl 6:
>
> #!/usr/bin/perl
>
> use IO::Socket::INET;
> my IO::Socket::INET $n = (LocalPort=>20010,Listen=>5);
> $n.listen();
> while ($s=$n.accept()) {
> $stdout.print($s.getlines);
> $s.close;
> }
Here you go:
use IO::Socket::INET;
my $n = new IO::Socket::INET: LocalPort => 20010, Listen => 5;
$n.listen();
while (my $s = $n.accept) {
print <$s>;
$s.close; # or even close $s;
}
The second line has a lot of different variants; I opted on the side of
conservatism.
Luke