On Tue, May 5, 2020 at 8:01 AM Gianni Ceccarelli <dak...@thenautilus.net> wrote: > > On 2020-05-05 William Michels via perl6-users <perl6-us...@perl.org> > wrote: > > mbook:~ homedir$ perl6 -ne 'put .chop' demo1.txt > > this is a test > > I love Unix > > I like Linux too > > mbook:~ homedir$ perl6 -pe '.chop' demo1.txt > > this is a test, > > I love Unix, > > I like Linux too, > > The ``.chop`` method does not mutate its argument, it only returns a > chopped value. If you want to mutate, you need to say so:: > > raku -pe '.=chop' demo1.txt > > Notice that the ``.=`` operator is: > > * not specific to ``chop`` > * not even specific to calling methods > > In the same way that ``$a += 1`` is the same as ``$a = $a + 1``, so > ``$a .= chop`` is the same as ``$a = $a.chop``. > > So, if you wanted, you could do:: > > raku -pe '.=uc' # print upper-case > > --
I appreciate the reply, but your answer fails to explain one thing: why does chop work without ".=" assignment using the "-ne" one-liner flag, but not with the "-ne" one-liner flag"? According to the help screen (running 'perl6 -help' at the bash command prompt), this is what it says about the "-n" and the "-e" flags: -n run program once for each line of input -p same as -n, but also print $_ at the end of lines So what strikes me from the definitions above is the part where "-p" is the "same as -n... (with autoprinting of $_)." That leads people to believe that they can write a short one-liner with the -ne flag ('put .chop') and an even shorter one-liner with the -pe flag ('.chop'). If the only difference between the "-n" and "-p" flags is really that the second one autoprints $_, I would have expected the "-pe" code above to work identically to the "-ne" case (except "-ne" requires a print, put or say). Presumably 'perl6 -ne "put .chop" ' is the same as 'perl6 -ne ".chop.put" ' , so if ".put" isn't returning $_ , what is it returning then? Look, It's no big deal if I have to write 'perl6 -pe ".=chop" ' instead of 'perl6 -pe ".chop" ', I just want to resolve in my mind a perceived inconsistency wherein there's no requirement to write 'perl6 -ne "put .=chop" ' for the "-ne" case, but there IS a requirement to write 'perl6 -pe ".=chop" ' for the "-pe" case. Best Regards, Bill.