The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!?usr/bin/perl
use PadWalker qw(peek_my peek_our);
use warnings;
use strict;
sub ruby_quote($) {
	my ($string) = @_;
	my %hash = (%{peek_our(1)},%{peek_my(1)});
	$string =~ s!(\#\{  (.*?)  \})!${$hash{$2}||\$1}!xg;

	#XXX: LexAlias is required to make it work properly
	$string =~ s!\#\{  (.*?)  \}!eval($1)!exg;
	return $string;
}
my  $lang = "Perl";
our $lang2 = "Ruby";
print ruby_quote '$vars are sometimes used both in #{$lang} and in #{$lang2}, but #{1+1} is a sigil in neither
';