use strict; use warnings; use Data::Dumper; sub mkcref (@) { my @closed = @_; return sub { @closed}; } sub mkaref (@) { return [@_]; } sub mkhref (%) { if ( @_%2 ) { warn "Odd number of elements in mkhref"; return { @_, undef }; } else { return {@_}; } } my $foo = mkaref 1,2,3,qw(a b c); print Dumper $foo; my $bar = mkhref a => 1, b => 2, 3; print Dumper $bar;