package Pugs::Runtime::Common;
use strict;
use warnings;
our %quote = (
# left => # right
"'" => "'",
'"' => '"',
'/' => '/',
'!' => '!',
'(' => ')',
'[' => ']',
'{' => '}',
'<' => '>',
'<<' => '>>',
'«' => '»',
'“' => '”',
'‘' => '’',
);
our %perl6_name = (
# perl 5 => # perl 6
'%::ENV' => '%*ENV',
'$^O' => '$*OS',
'$$' => '$*PID',
'$0' => '$*EXECUTABLE_NAME',
'$0' => '$*PROGRAM_NAME',
'@INC' => '@*INC',
'\\*STDERR' => '$*ERR',
'__FILE__' => '$?FILE',
'$::_V6_ERR_' => '$!',
'$::_V6_MATCH_' => '$/',
'$::_V6_STDIN' => '$*IN',
'$::_V6_STDOUT' => '$*OUT',
'$::_V6_BACKEND'=> '$?PUGS_BACKEND',
'$::_V6_COMPILER_OS' => '$?OS',
'$::_V6_COMPILER_NAME' => '$?COMPILER',
'$::_V6_COMPILER_VERSION' => '$?VERSION',
);
our %perl5_name = reverse %perl6_name;
sub mangle_ident {
my $s = shift;
Carp::confess unless defined $s;
$s =~ s/ ([^a-zA-Z0-9_:] | (?<!:):(?!:) ) / '_'.ord($1).'_' /xge;
return $s;
}
sub mangle_var {
my $s = $_[0];
#warn "mangle: $s";
return $perl5_name{$s} if exists $perl5_name{$s};
substr($s,1) =~ s/ ([^a-zA-Z0-9_:] | (?<!:):(?!:)) / '_'.ord($1).'_' /xge;
return $s;
}
1;
syntax highlighted by Code2HTML, v. 0.9.1