On 12/21/18 11:46 AM, Timo Paulssen wrote:

On 21/12/2018 20:38, ToddAndMargo via perl6-users wrote:
$ p6 'my $x="11.2."; my Str $D0; my Str $D1; $x~~m{ (<:N>+) [.] (\d+)
}; $D0 ~$0; $D1 ~ $1;  print "$D0 $D1\n";'
WARNINGS for -e:
Useless use of "~" in expression "$D1 ~ $1" in sink context (line 1)
Useless use of "~" in expression "$D0 ~$0" in sink context (line 1)
Use of uninitialized value of type Str in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to
something meaningful.
   in block <unit> at -e line 1
Use of uninitialized value of type Str in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to
something meaningful.
   in block <unit> at -e line 1
Use of uninitialized value of type Str in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to
something meaningful.
   in block <unit> at -e line 1
Use of uninitialized value of type Str in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to
something meaningful.
   in block <unit> at -e line 1


The trouble here is that what you have coded here is

"create the concatenation of $D0 and $0, then create the concatenation
of $D1 and $1". The compiler tells you that just creating the
concatenation and not doing anything with it (like storing it into a
variable) is useless, and probably wrong.

Then you get errors for using uninitialized Str, which $D0 and $D1 are
in both situations (since you never assign anything to it).

What you need is to put a = between $D0 and ~$0 and between $D1 and ~$1

That should work.

Hope that made some sense
   - Timo



Like this?

$ p6 'my $x="11.2."; my Str $D0; my Str $D1; $x~~m{ (<:N>+) [.] (\d+)}; $D0 ~= $0; $D1 ~= $1; print "$D0 $D1\n";'

11 2

Thank you for clearing that up.

Reply via email to