The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
package Test::SubExporter::GroupGen;

use strict;
use warnings;

use Sub::Exporter;

my $alfa  = sub { 'alfa'  };
my $bravo = sub { 'bravo' };

my $returner = sub {
  my ($class, $group, $arg, $collection) = @_;

  my %given = (
    class => $class,
    group => $group,
    arg   => $arg,
    collection => $collection,
  );

  return {
    foo => sub { return { name => 'foo', %given }; },
    bar => sub { return { name => 'bar', %given }; },
  };
};

sub gen_group_by_name {
  my ($class, $group, $arg, $collection) = @_;

  my %given = (
    class => $class,
    group => $group,
    arg   => $arg,
    collection => $collection,
  );

  return {
    baz => sub { return { name => 'baz', %given }; },
  };
}

my $config = {
  exports => [ ],
  groups  => {
    alphabet  => sub { { a => $alfa, b => $bravo } },
    generated => $returner,
    # symbolic  => \&gen_group_by_name,
    # symbolic  => sub { shift->gen_group_by_name(@_) },
    symbolic  => \'gen_group_by_name',
  },
  collectors => [ 'col1' ],
};

Sub::Exporter::setup_exporter($config);

"gg";