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