T,
This regex seems to work in both cases: m:global/ [ \\? '"' <-[ " ]> * \\? '"'
| \S+ ] /;
#!/usr/bin/env perl6
use v6;
my ($x, @y);
$x = 'ls -al "Program Files" "Moe Curly Larry"';
@y = $x ~~ m:global/ [ \\? '"' <-[ " ]> * \\? '"' | \S+ ] /;
for @y -> $match { say ~$match; }
$x = 'ls -al \"Program Files\" \"Moe Curly Larry\"';
@y = $x ~~ m:global/ [ \\? '"' <-[ " ]> * \\? '"' | \S+ ] /;
for @y -> $match { say ~$match; }
Mark
-----Original Message-----
From: ToddAndMargo [mailto:[email protected]]
Sent: Sunday, July 16, 2017 8:35 PM
To: perl6-users <[email protected]>
Subject: Re: String to array problem
On 07/16/2017 05:16 PM, Mark Devine wrote:
> T,
>
> my $x = 'ls -al "Program Files" "Moe Curly Larry"'; my @y = ~($x ~~
> m:global/ [ '"' <-[ " ]> * '"' | \S+ ] /);
>
> Mark Devine
>
> -----Original Message-----
> From: ToddAndMargo [mailto:[email protected]]
> Sent: Sunday, July 16, 2017 7:41 PM
> To: perl6-users <[email protected]>
> Subject: String to array problem
>
> Hi All,
>
> I have been scratching my head trying to figure out how to turn a string with
> quotes in it into an array.
>
> my $x='ls -al "Program Files" "Moe Curly Larry"';
>
> Desired result:
> my @y;
> $y[0] = 'ls';
> $y[1] = '-la';
> $y[2] = 'Program Files';
> $y[3] = 'Moe Curly Larry';
>
> Any words of wisdom?
>
> Many thanks,
> -T
>
It kinda, sorta doesn't work:
<code>
$ cat ./QuoteArrayTest.pl6
#! /usr/bin/env perl6
use strict;
print "\n";
my $x = 'ls -al \"Program Files\" \"Moe Curly Larry\"'; my @y =~($x ~~
m:global/ [ '"' <-[ " ]> * '"' | \S+ ] /); say "$x\n\@y:";
for @y.kv -> $index, $value { say "\$y[$index] = <$value>"; } print "\n";
</code>
ls -al \"Program Files\" \"Moe Curly Larry\"
@y:
$y[0] = <ls -al \"Program Files\" \"Moe Curly Larry\">
What did I do wrong?
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Computers are like air conditioners.
They malfunction when you open windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~