Matthew Walton wrote:
James Mastros wrote:
Larry Wall wrote:

On Fri, Nov 26, 2004 at 07:32:58AM +0300, Alexey Trofimenko wrote:
: ah, I forget, how could I do qx'echo $VAR' in Perl6? something like : qx:noparse 'echo $VAR' ?


I think we need two more adverbs that add the special features of qx and qw,
so that you could write that:


    q:x/echo $VAR/

where ordinary qx/$cmd/ is short for

qq:x/$cmd/
I think I'd like that much better if we consider execution and word-splitting to be the primary operations, and interpolation and noninterpolation the adverbial modifiers then the other way around, making that qx:q/echo $VAR/ or qx:qq/$cmd/.

especially because adverbs are meant to say "how to do" rather than "what to do", aren't they?


 OTOH, I expect backticks to be rare enough that I wouldn't mind writing
     use Spawn 'spawn';
    spawn :capture :wait ($cmd);
    spawn :capture :wait ('echo $VAR');

Although I'm masochistic enough that I don't mind the idea of always having to do execution with qx//, qx:q// or qx:qq// (running with other suggestions, I'd guess that would be non-interpolating execution, then the same again more explicitly, then interpolating execution) but I do like the idea of spawn.

hm.. qx:q// qx:qq//

...compare with:
     qx q//  qx qq//

so there's no need in adverbs. But we have no need in qx either. Why to introduce (or REintroduce) something if we have something similar already?

     $captured = system :capture q/cmd../;

or maybe even:
     (code=>$code, out=>$captured, err=>$err) = system qq/cmd/;

or maybe even(!)
     $captured = slurp qq/$cmd |/;

Kind of removes the idea of pulling in the output of other programs as a fundamental part of the language though, for that it's nice to have an executing, capturing quote. Perhaps an adverb to qx that makes it behave like system() - I don't think it'd be a good idea to provide one that makes it behave like exec(), although perhaps other people do.

I haven't that long unix background, and spawning processes is a very *fat* operation for me.. maybe after year or two I'll change my point of view, but for now I would be pretty happy with a 'slurp' variant. IMHO, spawning processes has nothing to do with other quoters, and perl already went far away from shells.


but talking about oneliners and short shell-like scripts, where `` is pretty useful.. hm.. things good for oneliners are rarely as good for larger programs, and vice versa. Of course, Perl5 proves opposite, but Perl6 tends to be a little more verbose, and even in Perl5 we use quite different "toolbox" and style for mentioned above. Why not to make an average sized module of various "shortcut" grammars, with a very short name ("x", f.e.), with defaults to export :all, so we could just do
perl -Mx -e 'print `echo this is a perl5qx`'


even if `` would be taken for something more useful in Perl6,
and still be able to import only something useful for our larger program with
use x qw/:perl5qx/;

Reply via email to