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