[PDD] Add docs for the Parrot_PMC_push_* and Parrot_PMC_pop_* functions
[parrot.git] / examples / tutorial / 61_namespaces.pir
blob8775016b363182c0b7776d7708d6c03d7da9b61a
1 # Copyright (C) 2007-2009, Parrot Foundation.
2 # $Id$
4 =head1 Namespaces
6 Subroutines all have a unique name, which is how the software recognizes
7 them. However, if we have many functions this can be difficult because
8 they all would need to be uniquely named. Namespaces are special constructs
9 that allow us to reuse subroutine and global variables names, and to keep
10 like code together.
12 Namespace PMCs are like Hash PMCs, so we can access different namespaces
13 with keys just like we would a hash. Namespaces can be nested to any
14 depth.
16 Using the C<set_global> and C<get_global> opcodes we can create, store,
17 and access variables in a different namespace.
19 =cut
21 .sub main :main
23    $P0 = new ['String']
24    $P0 = "Hello"
25    set_global ["Different"; "Namespace"], "foo", $P0
28    $P1 = get_global ["Different"; "Namespace"], "foo"
29    say $P1
31 .end
33 # Local Variables:
34 #   mode: pir
35 #   fill-column: 100
36 # End:
37 # vim: expandtab shiftwidth=4 ft=pir: