... this example snippet will return a syntax error (near ")["):
my $tmp = 42 + (&((MODES)[1])())[1];
The brackets associated with the & sigil are curlies not parentheses.
Win8 Strawberry 5.8.9.5 (32) Sun 11/22/2020 2:47:09
C:\@Work\Perl\monks
>perl
use strict;
use warnings;
use constant ADD_DATA => qw(add 1);
use constant REMOVE_DATA => qw(remove 2);
use constant MODES => (\&ADD_DATA, \&REMOVE_DATA);
print 42 + (&{ (MODES)[0] })[1];
^Z
43
But I don't know if this is exactly elegant!
Give a man a fish: <%-{-{-{-<