Perl String PMC

Synopsis

...

Creation

As with other PMC's, create the String with

new P0, .PerlString

Using string value

To set the string you can use the common way to set values on Parrot:

set P0, "string"

And it works in the other direction too:

set S0, P0

and now the string is on S0 register. You can set an integer or numeric value as if it was a string:

set P0, 3.1415926

and if the content of the PMC string is numeric, you can go in the other way too:

set N0, P0

This means that:

set P0, "foo"
set N0, P0

will put '0' in N0. In fact, this is very useful: you can convert a numeric value to string using:

set P0, 3.1415926
set S0, P0

Concatenating strings

Concatenating strings is done using the concat operator:

new P0, .PerlString
new P1, .PerlString
new P2, .PerlString

set P0, "Fred"
set P1, "Flintstone"

concat P2, P0, P1

Then, P2 will hold "FredFlintstone" string. To speed-up things, you can use string registers instead:

new P0, .PerlString
new P1, .PerlString

set P0, "Fred "
set S0, "Flintstone"

concat P1, P0, S0

Note that concatenation creates a new string; this means that after concatenating the string, you can change the original values without changing the concatenation result.

Repeating strings

Repeating strings can be done using the repeat operator. It repeats its second argument the number of times passed as third argument. The result is stored on the string PMC passed as first argument:

new P0, .PerlString
set P0, "x"
new P1, .PerlInt
set P1, 12
new P2, .PerlString
repeat P2, P0, P1

In this example P2 will become xxxxxxxxxxxx.

As you can set and get integers and numbers from a Perl String PMC, this is also valid:

new P0, .PerlString
set P0, "x"
new P1, .PerlString
set P1, 12
new P2, .PerlString
repeat P2, P0, P1

Trueness

Perl String PMC trueness values are like Perl scalar trueness. If it is empty (not initialized), contains an empty value or a 0, then it is evaluated as false. On other cases, it is true.

new P0, .PerlString
set P0, "foo"
if P0, TRUE          # this will succeed


new P0, .PerlString
set P0, "0"
if P0, TRUE          # this will fail

TODO

- Complete synopsis

- Document: chopn