To help you to get a feeling for what I mean, try this uncompleted(!) codefilter, which is only a hack(!) under construction ...
#!/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
Cheers Rolf
UPDATE: (*) of course that's more complicated than print @arr, but I wonder how perl6 intends to handle this case ... ?
In reply to Extended Sigils: Demonstration Of Concept
by LanX
in thread Five Features Perl 5 Needs Now
by Arunbear
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |