[PDD] Add docs for the Parrot_PMC_push_* and Parrot_PMC_pop_* functions
[parrot.git] / examples / tutorial / 24_string_ops_clone.pir
blob2921f3d481814f09088dae83bfc9431b8c0dd258
1 # Copyright (C) 2007-2009, Parrot Foundation.
2 # $Id$
4 =head1
6 This code example illustrates cloning with PMC strings. Simple copying
7 operations create two pointers to the same underlying memory structure.
8 A C<clone> operation actually creates two separate but identical
9 objects in memory. In this example, notice how C<$P1> and C<firstname>
10 both reference the same location in memory, but C<$P2> doesn't.
12 =cut
14 .sub main :main
15     .local pmc firstname
17     firstname = new ['String']
18     firstname = "Ford"
19     say firstname
21     $P1 = firstname
22     $P1 = "Zaphod"
23     say firstname
26     $P2 = clone firstname
27     $P2 = "Trillian"
28     say firstname
30 .end
32 # Local Variables:
33 #   mode: pir
34 #   fill-column: 100
35 # End:
36 # vim: expandtab shiftwidth=4 ft=pir: