##
my $num = shift;
my $groups = 5;
my $bits = 6;
my $mask = (1 << $bits) - 1;
my @out = map {
($num & $mask << $_ * $bits)
>> $_ * $bits
} 0..$groups-1;
####
my @in = (30, 14, 27, 2, 17);
my $width = 6;
my $offset = 0;
my $out = 0;
$out |= ($_ << ($offset++ * $width)) for @in;