1
2package Pugs::Runtime::Common;
3
4use strict;
5use warnings;
6
7our %quote = (
8    # left => # right
9    "'"    => "'",
10    '"'    => '"',
11    '/'    => '/',
12    '!'    => '!',
13    '('    => ')',
14    '['    => ']',
15    '{'    => '}',
16    '<'    => '>',
17    '<<'   => '>>',
18    '�'    => '�',
19    '�'    => '�',
20    '�'    => '�',
21);
22
23my @names = (
24    # perl 5        => # perl 6
25    '%::ENV'        => '%*ENV',
26    '$^O'           => '$*OS',
27    '$$'            => '$*PID',
28    '$0'            => '$*EXECUTABLE_NAME',
29    '$0'            => '$*PROGRAM_NAME',
30    '@INC'          => '@*INC',
31
32    '\\*STDERR'     => '$*ERR',
33
34    '__FILE__'      => '$?FILE',
35
36    '$::_V6_ERR_'   => '$!',
37    '$::_V6_MATCH_' => '$/',
38    '$::_V6_STDIN'  => '$*IN',
39    '$::_V6_STDOUT' => '$*OUT',
40    '$::_V6_BACKEND'=> '$?PUGS_BACKEND',
41    '$::_V6_COMPILER_OS'      => '$?OS',
42    '$::_V6_COMPILER_NAME'    => '$?COMPILER',
43    '$::_V6_COMPILER_VERSION' => '$?VERSION',
44);
45our %perl6_name = @names;
46our %perl5_name = reverse @names;
47
48sub mangle_ident {
49    my $s = shift;
50    Carp::confess unless defined $s;
51    $s =~ s/ ([^a-zA-Z0-9_:] | (?<!:):(?!:) ) / '_'.ord($1).'_' /xge;
52    return $s;
53}
54
55sub mangle_var {
56    my $s = $_[0];
57    return $perl5_name{$s} if exists $perl5_name{$s};
58    substr($s,1) =~ s/ ([^a-zA-Z0-9_:] | (?<!:):(?!:)) / '_'.ord($1).'_' /xge;
59    return $s;
60}
61
621;
63