Front page | perl.perl6.language |
Postings from June 2005
Re: Lvalue Str::words iterator
Thread Previous
|
Thread Next
From:
Ingo Blechschmidt
Date:
June 15, 2005 12:37
Subject:
Re: Lvalue Str::words iterator
Message ID:
d8pvka$sun$1@sea.gmane.org
Hi,
Juerd wrote:
> Ingo Blechschmidt skribis 2005-06-15 20:18 (+0200):
>> >> say join ",", @words; # "hi,my,name,is,ingo";
>> > Following the logic that .words returns the words, the words are no
>> > longer individual words when joined on comma instead of
>> > whitespace...
>> sorry, I don't quite get that.
>
> "foo bar baz".words.join(',').words.join(':') ne 'foo:bar:baz';
>
> so somewhere in that process, foo, bar and baz managed to no longer be
> words by the definition of words used by an on whitespace splitting
> words method - they're one word, together, when they're joined on
> comma.
ah! I understand :)
So maybe we should allow words() (or however we'll end up calling it) to
take an optional parameter specifying what's considered a wordchar,
with a default of rx/\w+/:
say "foo bar baz".words() .join(":"); # same as
say "foo bar baz".words(rx/\w+/) .join(":"); # "foo:bar:baz"
say "foo,bar,baz".words() .join(":"); # same as
# "," doesn't match /\w+/
say "foo,bar,baz".words(rx/\w+/) .join(":"); # "foo:bar:baz"
# Now "," is considered to be part of words:
say "foo,bar,baz".words(rx/[\w|,]+/).join(":"); # "foo,bar,baz"
say "foo bar baz".words(rx/b../) .join(":"); # "bar:baz"
Then your example...
say "foo bar baz".words.join(',').words.join(':'); # "foo bar baz";
And:
say "foo bar baz".words.join(",").words(rx/[\w|,]+/).join(":");
# "foo,bar,baz"
I hope these examples make sense...
--Ingo
--
Linux, the choice of a GNU | Perfection is reached, not when there is no
generation on a dual AMD | longer anything to add, but when there is
Athlon! | no longer anything to take away.
Thread Previous
|
Thread Next