#!/usr/bin/perl my @list = ('a', '6', '5', '5', '4', '5', '0', 'e'); my $hex = join '', @list; my $bin = unpack("B*", pack("H*", $hex)); # "10100110010101010100010100001110" my $idx = -1; my @tuner_list = map {$idx++; $_ ? $idx : ()} reverse split //, $bin; print "@tuner_list\n"; # 1 2 3 8 10 14 16 18 20 22 25 26 29 31