The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use PDL::LiteF;
use PDL::NiceSlice;
$a = sequence(10);
print "\n",'source $a'.'((4)) translated -> $a((4))',"\n";
print "Result ",$a((4)),"\n\n";
print 'alternative syntax: $a->'.'((4)) translated -> $a->((4))',"\n\n";
print 'source $a'.'(1:4) .= 2; translated -> $a(1:4) .= 2;',"\n"; # this should be rewritten
($tmp = $a(1:4)) .= 2;
print "Result: $a","\n\n";
print << 'EOP';
The arglist is split at commas but commas within
matched brackets are protected. That should allow
function invocations etc within the arglist:
EOP
print '$a'.'(1:end(0,22)) -> $a(1:end(0,22))',"\n\n";
print "recursive invocation is also supported:\n";
print '$a'.'(1,$b'.'(0:22)) -> $a(1,$b(0:22))',"\n\n";
no PDL::NiceSlice;
print << 'EOP';
Now we have switched off source filtering by issuing
no PDL::NiceSlice;
Therefore, the next slice expression should not be touched:
EOP
# this shouldn't be touched
print 'Source $a'.'(1:4) translation -> $a(1:4)',"\n\n";