#!/usr/bin/perl
sub ar2list ($) {
return @{ $_[0] };
}
sub push_aref ($@) {
CORE::push( @{+shift} , @_ );
}
package XSigils;
use Filter::Simple;
FILTER {
warn "\n\n\n --- Before Transformation: \n$_";
s{ push (\s|\() (\s*) €}
{push_aref$1$2€}xg;
s{ \@ \s* €}
{ar2list €}xg; # 2array
s{ €(\w+)\[ }
{\$$1->\[}xg; # dereference
s{ €(\w+) }
{\$$1}xg; # simple scalar
warn "\n\n\n --- After Transformation: \n$_";
warn "\n\n\n --- Code execution!\n";
};
1;
####
#!/usr/bin/perl
use XSigils;
$\="\n";
€arr=[1..3];
push €arr,4,5;
print @€arr;
####
--- Before Transformation:
$\="\n";
€arr=[1..3];
push €arr,4,5;
print @€arr; # (*)
--- After Transformation:
$\="\n";
$arr=[1..3];
push_aref $arr,4,5;
print ar2list $arr;
--- Code execution!
12345